OpenSolaris
Collectives
Discussions
Documentation
Download
Source Browser
Free CD
Log-in
|
en
Project ppc-dev
:
Project Task Map
>
Virtual Memory - HAT
Top Menu
Show
:
Comments
Attachments
History
Information
Print
:
Print
Print preview
Export as PDF
Export as RTF
Export as HTML
Export as XAR
Wiki code for
Virtual Memory - HAT
Hide Line numbers
1: == Virtual Memory - HAT (Hardware Address Translation) Layer == 2: 3: === Status 06/05/2007 === 4: 5: With the 2nd release of source the VM and the HAT layers are functional. The kernel is in control of the MMU even though we haven’t yet executed a bop_quisce. We still are relying on the prom interface for the console, print and network connection. However in the kernel memory management there is comfort level with it’s functionality. If you have reviewed the Openfirmware task you will have noticed the issues related to the lack of the ODW firmware running virtual memory mode. Overall this masked a number of items such that when we got VOF up and running we actually regressed in this area. However that is behind us. 6: 7: More details to follow along with the 2nd source release. 8: 9: 10: === Initial Review of the HAT Layer - 1/1/06 === 11: 12: Way back when, before even writing a line of code Guy did an assessment of the original 2.6 code to see what was usable in a 2.11 port project. Below are his notes from that review. 13: 14: Virtual Memory: HAT - Hardware Address Translation Layer - Guy Shaw 15: 16: The Virtual Memory sustem can be considered the core of a Solaris system, and the implementation of Solaris virtual memory affects just about every other subsystem in the operating system. Rather than managing every byte of memory, Solaris uses page-size pieces of memory to minimize the amount of work the virtual memory system has to do to maintain virtual-to-physical memory mappings. Figure 4.1 shows how the management and translation of the virtual view of memory (the address space) to physical memory is performed by hardware known as the virtual memory management unit (MMU). 17: 18: \~---- 19: 20: Guy has evaluated HAT interface changes based on a difference listing of 2.6 vs 2.10. usr/src/uts/common/vm/hat.h in /ws/on998-gate vs /ws/onnv-gate. 21: 22: *The following are new functions 23: 24: {{{ 25: hat_dump 26: hat_thread_exit 27: }}} 28: 29: {{{ 30: hat_unload_callback 31: hat_register_callback 32: hat_add_callback 33: hat_delete_callback 34: }}} 35: 36: {{{ 37: hat_getkpfnum_badcall 38: }}} 39: 40: {{{ 41: hat_reserve 42: }}} 43: 44: {{{ 45: hat_page_demote 46: }}} 47: 48: {{{ 49: /// Kernel Physical Mapping (segkpm) hat interface routines. /// 50: hat_kpm_mapin 51: hat_kpm_mapout 52: hat_kpm_page2va 53: hat_kpm_vaddr2page 54: hat_kpm_fault 55: hat_kpm_mseghash_clear 56: hat_kpm_mseghash_update 57: hat_kpm_addmem_mseg_update 58: hat_kpm_addmem_mseg_insert 59: hat_kpm_addmem_memsegs_update 60: hat_kpm_mseg_reuse 61: hat_kpm_delmem_mseg_update 62: hat_kpm_split_mseg_update 63: hat_kpm_walk 64: }}} 65: 66: {{{ 67: va_to_pfn 68: va_to_pa 69: }}} 70: 71: **The following functions have been removed 72: 73: {{{ 74: hat_pageflip 75: }}} 76: 77: **The following functions have a change in function signature 78: 79: {{{ 80: hat_share 81: hat_unshare 82: }}} 83: 84: {{{ 85: hat_dump() is small and is entirely processor-independent code. 86: }}} 87: 88: {{{ 89: hat_thread_exit() is small but the underlying function that implements it, 90: hat_switch(), does processor-specific and mmu-specific things to switch 91: from one thread to another. Not a big problem. 92: }}} 93: 94: {{{ 95: The hat callback family of functions is currently implemented on Sparc only. 96: We can just supply pacifiers to comply with the new interface. 97: hat_getkpfnum() is deprecated. There are a few places left that still call 98: hat_getkpfnum(). Those have all been changed to hat_getkpfnum_badcall() 99: so that hat_getkpfnum() can be eliminated from the HAT interface. That way, 100: nobody is tempted to write new code that uses hat_getkpfnum(). 101: hat_getkpfnum_badcall() is just the implementation of what used to be 102: hat_getkpfnum(). This is an easy change. 103: }}} 104: 105: {{{ 106: hat_reserve() does nothing. 107: }}} 108: 109: {{{ 110: hat_page_demote() is a significant amount of work. Much of it is 111: processor-independent, because it has to do with the way Solaris allocates 112: and deallocates Hardware Mapping Entries (HMEs). However, this can be 113: deferred, because it is only used for mappings of large page sizes. We 114: don’t have to exploit large page sizes in userland in the first cut. 115: }}} 116: 117: {{{ 118: Kernel Physical Mapping (segkpm) hat interface routines, hat_kpm_*(), are 119: process-specific, but are trivial. Many would be noops on PowerPC. 120: }}} 121: 122: {{{ 123: va_to_pfn() is used only at boot time, while the boot loader is in charge of 124: the MMU. It is illegal to use it after that. Whoever writes the boot stuff 125: can do what he wants. We may need to coordinate on this item. 126: }}} 127: 128: {{{ 129: va_to_pa() is declared in the common hat interface but is really only 130: implemented on Sparc and only sparc-specific code (drivers, etc.) call it. 131: We not only don’t have to implement it, we don’t even have to define it. 132: }}} 133: 134: {{{ 135: The removal of hat_pageflip() is not a problem. The Power<nop>PC 136: implementation just returned a status indicating that this feature was not 137: supported. 138: }}} 139: 140: {{{ 141: The change to hat_share() and hat_unshare() involve adding an argument, a 142: page size code, to indicated the desired page size for shared mappings. 143: This can be made simple by restricting the variety of page sizes we will 144: deal with. For starters, we don’t even have to support Intimate Shared 145: Memory (ISM) at all. 146: }}} 147: 148: {{{ 149: A few flags have been added for some functions: 150: HAT_RELOAD_SHARE 151: HAT_NO_KALLOC 152: HAT_LOAD_AUTOLPG 153: HAT_INIT 154: }}} 155: 156: {{{ 157: all these are either trivial or can be deferred. That’s about it for 158: interface changes. Please see below for comprehensive details on HAT port 159: }}} 160: 161: ===Study of the Feasibility of Reusing Solaris PPC 2.6 HAT Code====== 162: 163: {{{ 164: Guy has composed a more structured overview which can be seen below 165: }}} 166: 167: {{{ 168: Study of the Feasibility of Reusing Solaris/PPC 2.6 HAT Code 169: }}} 170: 171: **Background 172: 173: {{{ 174: Sun has already done a port of Solaris to PowerPPC. In 1995, Solaris 175: the release 2.5.1 supported PowerPC. Additional work was done for Solaris 176: rev 2.6. After 2.6, PPC support was removed, for commercial reasons rather 177: than any technical failure. 178: }}} 179: 180: {{{ 181: A big question in considering how to do the new Solaris/PPC is: 182: How much code from the Solaris/PPC 2.6 release can and should be reused, if 183: any? 184: }}} 185: 186: {{{ 187: This document is concerned about answering that question only for 188: the HAT layer and other processor-specific VM code, and portions of 189: the boot that deal with VM. 190: }}} 191: 192: {{{ 193: There are many pieces of processor-specific code involved in any 194: port of Solaris to a new processor, but the HAT layer is a large and 195: critical part. Whether a new HAT layer is written from scratch or 196: existing code is reused and upgraded, it is necessary to have some 197: idea of the costs of the HAT layer in order to have any hope of 198: reasoning about the total costs of the porting project. 199: }}} 200: 201: **HAT Roles 202: 203: {{{ 204: The HAT layer has many roles with respect to other parts of the 205: system, including hardware and other software. In order to make 206: decisions about the suitability of the existing code to be reused, 207: all of these roles must be examined, in light of the changes that 208: have taken place over the last decade. 209: }}} 210: 211: {{{ 212: The roles the HAT layer plays are: 213: }}} 214: 215: 1. HAT/MMU - Manager of hardware MMU resources 216: 1. HAT/provider - Provider of kernel services 217: 1. HAT/consumer - Consumer of kernel services 218: 1. HAT/boot - Partner during boot 219: 220: {{{ 221: The term HAT/runtime is used to denote HAT/MMU, HAT/provider, 222: and HAT/consumer, together; that is, everything except HAT/boot. 223: }}} 224: 225: {{{ 226: Keep in mind that the boundary between HAT roles is just logical, for 227: the sake of decomposing the analysis of changes in requirements. It is 228: not that there are separate files, packages, modules, or functions 229: (whatever) that keep the code for these roles separate. There is 230: separate code for HAT/boot vs HAT/runtime, but it is not possible to 231: separate out HAT/runtime roles in any coarse-grain fashion. A single 232: function can be HAT/provider in one line and call some function 233: (HAT/consumer) in the next, then immediately do some low-level TLB 234: management (HAT/MMU). 235: }}} 236: 237: **The Decision Process 238: 239: {{{ 240: It could be that the existing code is simply too far out of date with 241: respect to any combination of these four roles. In that case the 242: issue of re-usability would be a no-brainer, just scrap the old code. 243: In the case of interaction with boot, a decision can be made separately 244: to scrap most of the boot-related code, but keep all code related to 245: the other HAT roles. 246: }}} 247: 248: {{{ 249: If there is enough value in the old code, then things are not quite 250: so simple, because decisions can be influenced by other factors, such 251: as schedule and budget and willingness to drop or defer development 252: of some functionality. 253: }}} 254: 255: {{{ 256: For example, if rapid bring-up is an absolute requirement then things 257: can be done for the sake of quick results, but which mean that cleanup 258: or major revisions will have to be done later. Examples of possible 259: deferred HAT functionality are: 260: }}} 261: 262: 1. support for Intimate Shared Memory (ISM) 263: 1. support for 64 bit machines 264: 1. support for multiprocessor machines 265: 266: {{{ 267: The following four sections will present an evaluation of the 268: suitability of the Solaris 2.6 code. Each role will be evaluated 269: in terms of a quick go/no-go test, then in terms of time and 270: optional features. 271: }}} 272: 273: ===HAT/MMU - Manager of hardware MMU resources=== 274: 275: {{{ 276: 64-bit 277: }}} 278: 279: Solaris/PPC 2.6 has no support for 64-bit models. Not for 64-bit 280: kernel and not for 64-bit applications. That is bad news. But it 281: does not necessarily mean that Solaris/PPC 2.6 HAT is unsuitable 282: for reuse. If we wrote a new HAT from scratch, it is still more work 283: to support both 32-bit and 64-bit kernel and applications. Since the 284: new Solaris/PPC port see use for embedded systems, we believe that we 285: would not contemplate supporting only a 64-bit kernel, as is done 286: on Sparc. Even if we did that, in order to eliminate one of the four 287: combinations, it would not save as much as 1/4 of the effort. 288: 289: What this means is that it boils down to 2 questions: 290: 291: 1) Is the 64-bit MMU hardware so fundamentally different that the 292: 32-bit code cannot (or should not) be reused? 293: 294: 2) Was the Solaris/PPC 2.6 HAT code designed in a way that makes it 295: unnecessarily difficult to support both 32-bit and 64-bit hardware? 296: 297: You might think that the MMU hardware would be fundamentally different 298: between 32-bit and 64-bit, and necessarily so. The major rewrite 299: of Solaris/x86 HAT code was triggered by the port to AMD64. But, 300: that was only the proximate cause. 301: 302: Intel’s x86 hardware was designed //much// earlier than PowerPC. 303: Intel did not start out with a road-map for 64-bit kernel or userland. 304: Solaris/x86 was not designed with a 64-bit future in mind. But, the 305: PowerPC was designed from the beginning to be a 64-bit architecture 306: with a 32-bit subset. That applies to the MMU design as well as ISA 307: (Instruction Set Architecture). 308: 309: The PowerPC has hashed page tables, unlike the x86, which has 310: forward-mapped page tables. Also, there is one global page table, no 311: per-process or per-group or separate kernel vs userland page tables. 312: That is not a decision made by a kernel developer; it is pretty much 313: dictated by the PowerPC MMU design, and we do not want to fight the 314: hardware. 64-bit addresses have segment IDs that are 32 bits longer, 315: but the role of the lower order bits in hashing and indexing into 316: the page table is the same for 32-bit and 64-bit. The designers of 317: Solaris/PPC knew this at the time and kept it in mind. Although it 318: has not been put to the test, the code appears to be sufficiently 319: 64-bit clean. 320: 321: Conclusion: going to 64-bit HAT is nowhere near as traumatic as it 322: was for x86 and AMD64. 323: 324: Other aspects of 64-bit Solaris/PPC are outside the scope of this 325: document. They would include design of a 64-bit ABI, link editor, 326: etc. and getting consensus from all stake-holders. Historically, 327: arriving at a consensus has been known to consume a great deal of time. 328: But, reusing Solaris/PPC 2.6 HAT code does not add to this problem. 329: 330: //Location and size of page tables// 331: 332: There is a possibility of running into problems with a larger page 333: table on a 64-bit system with more physical memory. This is because 334: the pagetable is contiguous physical memory and a larger page table 335: might conflict with something else that needs to be in lower memory 336: or upper memory. But, I don’t think this is too likely. In any case, 337: this problem is not made worse by reusing Solaris/PPC 2.6 code. 338: 339: //MMU related traps// 340: 341: Older models of PowerPC generated traps for every TLB miss. Newer 342: models can reload the TLB from the page tables without any traps; 343: the only page fault is a major page fault. This is a welcome change. 344: We could leave the trap handler in the code for the sake of older 345: models, or we could purge it if we know we will never encounter 346: hardware that generates TLB-miss traps. Better to have and not need 347: than to need and not have. However, finding machines to test this 348: case could be difficult. 349: 350: //Endianness// 351: 352: PowerPC can operate in either big-endian or little-endian mode. 353: Solaris/PPC runs in little-endian mode. This decision was made 354: primarily because of customer requirements at the time (1993-1995), 355: not for any purely technical reason. Without those commercial 356: requirements, there would be a slight advantage to running big-endian. 357: For one thing, PowerPC page tables are big-endian, independent of the 358: overall endian mode of the machine. The designers of Solaris/PPC knew 359: at the time that this might be controversial and subject to change, 360: and they coded accordingly. The HAT layer used accessor functions 361: for all read and modify operations on the page tables. Other parts of 362: Solaris have some endianness dependencies, but I believe they are not 363: a huge problem. In fact, we have a running big-endian version 364: of Solaris/PPC that was done as a feasibiltiy project. So, we might 365: be able to use that as a starting point. 366: 367: //Cache Implementation// 368: ~---- 369: The PowerPC architecture leaves the details of cache implementation 370: pretty wide open so that each model can be free to implement caching 371: in its own way. A model of PowerPC is allowed to implement no cache 372: at all. It is possible that Solaris/PPC 2.6 code, which supported 373: a small number of early PowerPC models, would have to be modified to 374: handle a wider range of cache behaviors in order to support newer 375: models. Besides cache geometry (number of levels, size of each level, 376: line sizes), which ought to be parameterized, other implementation 377: details are possible, which may require more significant code changes 378: to support. For example, on some models, a cache might be virtually 379: indexed, as is the case for some Sparc models. In that case, code 380: to handle page coloring would need to be added for performance. 381: At least in the case of the MPC-7450, this will not be necessary. 382: 383: //Multiprocessor// 384: ~---- 385: Solaris/PPC has been written with multiprocessor machines in mind. 386: There was a working version running in the lab, but it was not 387: integrated into Solaris 2.7, because Solaris/PPC was canceled by 388: then. Multiprocessor machines are much more common, today, and so 389: expectations are higher. A PPC port of Solaris would still require 390: much effort to verify multiprocessor mostly due to testing. 391: 392: 393: ~---- 394: //HAT/provider - Provider of kernel services// 395: ~---- 396: 397: The HAT layer is inherently processor and platform dependent. 398: For that reason, Solaris HAT interfaces are pretty well-defined, 399: much more so that some other parts of the kernel which have not 400: had to be ported several times over Solaris’s life. Therefore, of 401: all parts of the kernel, the HAT layer is among the least likely to 402: suffer from illegitimate interfaces, such as unintended dependencies, 403: spooky action at a distance, lack of decomposability, etc. 404: 405: All legitimate HAT interface is defined in usr/src/uts/common/vm/hat.h. 406: This basic source code structure has not changed. It was a good idea 407: then, and it is a good idea now. 408: 409: How has the HAT interface since Solaris 2.6? This can be answered by 410: examining a difference listing of usr/src/uts/common/vm/hat.h between 411: 2.6 and the current version of Solaris. 412: 413: The two source code gates to be compared are: 414: 415: /ws/on297-gate 416: /ws/onnv-gate 417: 418: The following are new functions: 419: 420: hat_dump 421: hat_thread_exit 422: 423: hat_unload_callback 424: hat_register_callback 425: hat_add_callback 426: hat_delete_callback 427: 428: hat_getkpfnum_badcall 429: 430: hat_reserve 431: 432: hat_page_demote 433: 434: /// Kernel Physical Mapping (segkpm) hat interface routines. /// 435: hat_kpm_mapin 436: hat_kpm_mapout 437: hat_kpm_page2va 438: hat_kpm_vaddr2page 439: hat_kpm_fault 440: hat_kpm_mseghash_clear 441: hat_kpm_mseghash_update 442: hat_kpm_addmem_mseg_update 443: hat_kpm_addmem_mseg_insert 444: hat_kpm_addmem_memsegs_update 445: hat_kpm_mseg_reuse 446: hat_kpm_delmem_mseg_update 447: hat_kpm_split_mseg_update 448: hat_kpm_walk 449: 450: va_to_pfn 451: va_to_pa 452: 453: The following functions have been removed: 454: 455: hat_pageflip 456: 457: The following functions have a change in function signature: 458: 459: hat_share 460: hat_unshare 461: 462: hat_dump() is small and is entirely processor-independent code. 463: 464: hat_thread_exit() is small but the underlying function that implements 465: it, hat_switch(), does processor-specific and MMU-specific things to 466: switch from one thread to another. Not a big problem. 467: 468: The hat callback family of functions is currently implemented on Sparc 469: only. We can just supply pacifiers to comply with the new interface. 470: 471: hat_getkpfnum() is deprecated. There are a few places left 472: that still call hat_getkpfnum(). Those have all been changed to 473: hat_getkpfnum_badcall() so that hat_getkpfnum() can be eliminated 474: from the HAT interface. That way, nobody is tempted to write new 475: code that uses hat_getkpfnum(). hat_getkpfnum_badcall() is just 476: the implementation of what used to be hat_getkpfnum(). This is an 477: easy change. 478: 479: hat_reserve() does nothing. 480: 481: hat_page_demote() is a significant amount of work. Much of it is 482: processor-independent, because it has to do with the way Solaris 483: allocates and deallocates Hardware Mapping Entries (HMEs). However, 484: this can be deferred, because it is only used for mappings of large 485: page sizes. We don’t have to exploit large page sizes in userland 486: in the first cut. 487: 488: Kernel Physical Mapping (segkpm) hat interface routines, hat_kpm_*(), 489: are process-specific, but are trivial. Many would be no-ops on PowerPC. 490: 491: va_to_pfn() is used only at boot time, while the boot loader is in 492: charge of the MMU. It is illegal to use it after that. Whoever writes 493: the boot stuff can do what he wants. We may need to coordinate on 494: this item. 495: 496: va_to_pa() is trivial, and is the same for all processors. It is 497: just va_to_pfn() with the page offset of the given virtual address 498: blended back in to give the corresponding physical address. 499: 500: The removal of hat_pageflip() is not a problem. The PowerPC 501: implementation just returned a status indicating that this feature 502: was not supported. 503: 504: The change to hat_share() and hat_unshare() involve adding an 505: argument, a page size code, to indicated the desired page size for 506: shared mappings. This can be made simple by restricting the variety 507: of page sizes we will deal with. For starters, we don’t even have 508: to support Intimate Shared Memory (ISM) at all. 509: 510: //Flags// 511: ~---- 512: A few flags have been added for some functions: 513: 514: HAT_RELOAD_SHARE 515: HAT_NO_KALLOC 516: HAT_LOAD_AUTOLPG 517: HAT_INIT 518: 519: all these are either trivial or can be deferred. 520: 521: 522: //Intimate Shared Memory (ISM)// 523: ~---- 524: ISM is strictly a performance feature. It does not involve any change 525: to the HAT interface. ISM is a term used to refer to the cases when 526: multiple processes can share not only mappings to the same physical 527: memory, but also MMU resources used for those mappings. For example, 528: in the case of x86, with forward-mapped page tables, entire pages of 529: Page Table Entries (PTEs) can be shared, provided that the virtual 530: addresses and size just happen to be suitable for sharing pages 531: of PTEs. Let’s use the term "PTE-page-span" to describe the size 532: mapped by an entire page of PTEs. It is not required that all the 533: mappings to the same physical memory have the same virtual address. 534: But, the virtual addresses must all be aligned on a PTE-page-span 535: boundary, and their sizes must be a multiple of the PTE-page-span. 536: Any mappings that are less strict about VA alignment and size cannot 537: share page tables without violating Unix memory mapping semantics 538: and/or security principles. If VA alignment and size are even more 539: strict, then 2nd-level and even higher level pages of directory entries 540: could be shared. Something very similar has been done on Itanium and 541: MIPS hardware, except that those machines have linear page tables, 542: rather than forward-mapped. 543: 544: Solaris/PPC 2.6 does not implement ISM. But, the absence of ISM 545: support is clean. That is, the fact that ISM was not supported 546: in Solaris/PPC 2.6 does not affect any decision to reuse the 547: existing code. The same work would have to be done whether adding 548: functionality to the old code or writing all new code. Whether any 549: functionality we add is easy or difficult, it is pure and simple 550: addition of functionality. Nothing about the Solaris/PPC 2.6 HAT 551: design involved work that would have to be undone or commitments to 552: a way of doing things that we might regret. 553: 554: PowerPC MMU does not have any such thing as pages of PTEs. The only 555: possible way to support any sharing of MMU resources on PowerPC is to 556: use Block Address Translation (BAT) registers. BAT registers are the 557: only mechanism for mapping regions of memory with a page size larger 558: than 4K. There are only a handful of BAT registers. ISM implemented 559: this way would have more strict alignment requirements, because a 560: single BAT entry with a large page size would require: 561: 562: 1) that all mapping be naturally aligned with respect to page size; 563: 2) that the requested size must be exactly 1 page size; 564: 3) that the underlying physical memory be contiguous and naturally aligned physical addresses. 565: 566: An unlimited number of processes could share the same memory, but at 567: any time, only a very small number of these mappings can be supported. 568: On an embedded system, there might be an application for which this 569: support is just perfect. Even a single very large mapping shared 570: by 2 processes could be a big win for the right kind of application. 571: It could save a great deal of pressure on the page table. Let’s see 572: ... large mappings can save 256 PTEs per megabyte. A 1 GByte mapping 573: for shared data could save 1/4 megaPTEs. In order to do this, there 574: would have do be some mechanism for preventing physical memory from 575: getting fragmented beyond redemption before we even get to the first 576: userland process. There is no interface to do this. There would 577: probably have to be something in /etc/system to tell the kernel to 578: reserve physical memory early on. 579: 580: ~---- 581: //HAT/consumer - Consumer of kernel services// 582: ~---- 583: 584: The HAT layer, proper, is pretty low down in the dependency tree of all 585: kernel services. This is especially true of the pure TLB management 586: functions. We would be in trouble if the data types and functions 587: provided by the kernel changed significantly in the last decade. 588: But it looks like we are in pretty good shape. 589: 590: //Data types// 591: ~---- 592: The HAT does interact with some other kernel data structures. 593: 594: 1. HAT uses page_t’s which describe pages of physical memory. 595: 596: The machine-dependent page_t, machpage_t, is a pure extension of 597: the page_t data type; the page_t structure is not modified in any 598: other way. No part of Solaris uses the machpage_t extensions. 599: 600: //Functions// 601: ~---- 602: The HAT layer needs locking primitives and some atomic operations. 603: Function calls are used and the data types used with these functions 604: are either opaque objects or primitive data types. So, the HAT does 605: depend on functions such as: mutex_//(), cv_//(), atomic_*(), cas(). 606: The good news is that these functions are pretty low level and their 607: interfaces are stable. 608: 609: xXX Better separation of pure TLB management functions. 610: XXX Move to separate library 611: 612: XXX It may be a good idea to change use of cv_*() functions 613: 614: ~---- 615: //HAT/boot - Partner during boot// 616: ~---- 617: 618: Solaris boot has changed considerably since 2.5.1 and 2.6. Almost all 619: boot-related HAT code will have to be thrown out, no matter what. 620: It is almost a complete write-off. Certainly, all the code related 621: to boot-time device support is useless. Some snippets related to VOF, 622: such as getting properties, can be used as a design suggestion. 623: 624: XXX How much has VOF changed? Not much, we hope. 625: 626: The good news is that modern boot makes many things easier. The basic 627: problem of handing off allocated memory and mappings from boot to the 628: kernel HAT is not much different, so some small pieces can be reused. 629: 630: Another bit of good news is that some things that are done for good 631: hygiene can be deferred. For example, we can just waste some memory 632: owned by boot, bypassing the tricky hand-off code for those pages 633: of memory. This is a good trade, for the sake of rapid bring-up. 634: 635: Whether we reuse Solaris/PPC 2.6 code or not, I strongly recommend 636: that we invest a great deal in enforcing the contract between boot and 637: the HAT layer, much more than has been done for Sparc and x86, even 638: more than was done for Solaris/IA64, which invested heavily in this. 639: This kind of investment is one that is tempting to short-stroke in 640: the interests of quick startup, but it pays big-time, unless all the 641: developers are perfect in every way, or extremely lucky. In fact, 642: I recommend that we deliberately change the contract, a few times 643: during development, just to keep us safe from inadvertent dependency 644: creep. For example, page table size and location can be changed, 645: within reason; allocation of BAT registers can be changed, for no 646: particular reason. 647: 648: There is processor-dependent code to handle userland process address 649: space allocations. It is not really part of the HAT, proper, but 650: the developer who writes and maintains the HAT usually maintains 651: this bit part, as well. In addition to changing HAT/boot contract, 652: I recommend changing some aspects of VM layout, such as text start 653: address. It is not that we cannot decide on a value and stick with it. 654: It is a bit of a jolt to the system, just to keep things on track. 655: Better to do it early, rather than later. 656: 657: XXX More on boot/HAT contract, later. 658: 659: //Data types// 660: ~---- 661: XXX memseg structures changed? 662: 663: //Functions// 664: ~---- 665: 666: //Flow of control// 667: ~---- 668: XXX flow of control from _starup() ... hat_kern_setup() 669: 670: ~---- 671: 672: The following is a quick overview of HAT features 673: and an assessment of: 674: 1. how easy it is to implement; 675: 1. whether it can be deferred (from a purely technical perspective, not whether it is considered to be a critical requirement); 676: 1. how much demand there is, particularly for embedded systems; 677: 1. how urgent is the requirement; 678: 1. how much of an embarrassment would it be if this feature were not implemented, considering things like how much expectations have changed in the last decade, what has Linux already done, etc. 679: 1. How much more testing has to be done, let alone implementation cost. Some things could be coded right away, but have serious testing implications. For example, do we want to retain support for older models? That is a coding noop, but a huge increase in testing complexity, hardware procurement, and 680: {{{ 681: so on. 682: }}} 683: 684: critcal testing 685: Feature easy? defer? demand urgency factor burden 686: ~---- ~----~----~----~----~---- ~---- 687: Multiprocessor ??? yes high soon high high 688: 64-bit maybe yes ??? low low high 689: endian change yes yes ??? high low low 690: ISM no yes low low low medium 691: 692: ~---- 693: 694: XXX UPOD schedule vs quick&dirty schedule 695: XXX UPOD := Under-Promise Over-Deliver 696: 697: ~---- 698: 699: //OPINION on HAT DATA Structures// 700: 701: The hat data structure should be an opaque data type, preferably void. That is, nothing outside the HAT should refer to "struct hat", but to hat_t. So, hat_t // is void //, as far everyone is concerned, except the HAT implementation. 702: 703: If we wrote the kernel in C++, we could make hat_t a class with private members. 704: 705: We should be able to change all usage of "struct hat" to hat_t. 706: 707: If that is not acceptable, than we ought to at least redefine the struct hat so that it has one member which is a simple data type and has an unlikely name, like __none_of_your_business. Failing that, we ought to be able to redefine struct hat so that all the members are the same order, data type, offset, and size, but the member names have been changed, for example by prefixing each member name with __. 708: 709: vm/hat.h could have some preprocessor code like so: 710: 711: =if defined(HAT_IMPLEMENTATION) 712: struct hat { some_type member1; ... }; 713: =else 714: struct hat { some_type __member1; ... }; 715: =endif 716: 717: END of OPINION 718: 719: ~---- 720: //HAT/boot Food Taster and HAT Debugging Tools// 721: ~---- 722: 723: Most of this document covers changes to Solaris/PPC 2.6 code that are 724: imposed by external factors: changing hardware, evolution of Solaris, 725: changes to boot. But, there are a few changes recommended here, 726: simply because they are an important improvement in HAT construction 727: technology. By a very wide margin, the top two are: 728: 729: 1. Extensive HAT/boot food taster 730: 1. HAT Debugging toolkit 731: 732: These additions do not come free of cost, so they need to be mentioned 733: here. However, they have a very good chance of leading to a net 734: reduction in system bringup time, and they contribute to more 735: reliable time budgets, because big surprises are reduced. 736: 737: ~---- 738: //HAT/boot Food Taster// 739: ~---- 740: 741: Things don’t go well if the HAT consumes anything toxic. Things can go 742: especially badly early on and in mysterious ways if the HAT inherits 743: MMU state from boot which is not compatible with the state for which 744: it is designed. I recommend spending some time up front in writing 745: a significant amount of code which tests the MMU state and other 746: conditions, as they are when HAT first takes control. If there is 747: anything that is not in order, the HAT/boot food taster should not 748: be sparing in its effort to explain clearly what is expected and 749: what it got, and then die a quick and merciful death. Perhaps in 750: the process it can deliberately trigger the debugger (either hardware 751: debugger or kmdb), if present, in a special way. The alternative to 752: fail-fast semantics is system delusion, so fail fast and fail noisily. 753: 754: This sort of thing was done on Solaris/IA64, and has been proven to save 755: a great deal of time when integrating work done by several developers 756: each working on different pieces, and possibly misunderstanding the 757: HAT/boot contract. 758: 759: Even if it were the case that large pieces of HAT/boot code could 760: be reused, the amount of work needed to add a HAT/boot food taster 761: is pretty much the same for a HAT code update or for a brand new 762: HAT layer. 763: 764: 765: ~---- 766: //HAT Debugging Toolkit// 767: ~---- 768: 769: It is common to sprinkle some ASSERTs in the code. 770: Also, most HAT developers have a stash of HAT debugging 771: aids, such as a handy-dandy pagetable hashing pocket calculator 772: or pagetable walker/navigator. But, I believe it is a good idea 773: to include a set of kernel functions and userland tools 774: as a first class citizen in the software release. 775: Solaris/IA64 had an extensive set of HAT debug helper functions, 776: as well as userland tools to do HAT-specific monitoring of 777: correctness and performance. Our new Solaris/PPC port can do even more 778: because there are more hardware and software tools available, 779: such as hardware debugger (when available) and DTrace. 780: 781: The amount of work needed to add a HAT debugging toolkit 782: is pretty much the same for a HAT code update or for a 783: brand new HAT layer. 784: 785: Some of the components of the HAT debugging toolkit are: 786: 787: 1. Fault injection 788: 1. Pagetable and HME verifier 789: 1. Pagetable and HME statistics 790: 1. Pathological workloads (small scale) 791: 792: //Fault Injection// 793: ~---- 794: One example of the use of fault injection for the HAT layer is 795: to arrange for races to be lost often. The function to atomically 796: replace a PTE can be implemented with a version that deliberately 797: causes it to fail with a specified probability, but being careful to 798: limit the number of consecutive failures from the same caller so that 799: we don’t block forward progress of the system. 800: 801: //Pagetable and HME verifier// 802: ~---- 803: A pagetable and HME verifier is to the HAT data structures what fsck 804: is to UFS filesystem metadata. On a running system things change too 805: quickly to check consistency of the entire system, but at the time of a 806: kernel panic, it can be done without disturbing the existing mappings. 807: Also, most of the consistency checking is decomposable. That is, 808: much can be determined about the internal consistency of a subset of 809: page tables, and it can be tested quickly and nondestructively. 810: 811: //Pagetable and HME statistics// 812: ~---- 813: Before DTrace, it would have been very difficult to generate statistics 814: about things like hash collisions without writing extra helper 815: functions and rolling your own methods for enabling and disabling 816: probing; and it was even more difficult to get statistics out of the 817: kernel so that some userland monitoring / visualization program can 818: slice and dice and present the data. DTrace makes this sort of thing 819: a great deal easier. However, I believe the HAT may still have some 820: hooks in it with DTrace and userland reporting programs in mind. 821: 822: //Pathological workloads// 823: ~---- 824: In order to exercise the logic for handling rare cases, such as 825: clustering of hash collisions leading to full PTE groups, small 826: workloads can be constructed that generate very unfortunate reference 827: patterns. 828: 829: ~---- 830: 831: There are several ideas for new functionality and performance 832: enhancements, but they are not as important and certainly not as 833: urgent as debugging aids. So, they will be collected in a document 834: yet to come.
Search
Collectives
Community Group
Academic and Research
Accessibility
Advocacy
Appliances
Approachability
Architecture Process and Tools
BrandZ
Chinese Users
Community Advisory Board
Databases
Desktop
Device Drivers
Distribution
Documentation
DTrace
Emerging Platforms
Fault Management
Games on OpenSolaris
HA Clusters
HPC Developer
Installation and Packaging
Internationalization and Localization
Laptop
Logical Domains
Modular Debugger (MDB)
Networking
NFS
Observability
OpenSolaris Governing Board (OGB)
OpenSolaris Printing
OS/Net (ON)
Performance
Power Management
PowerPC
Security
Service Management Facility (smf(5))
Software Porters
Solaris Volume Manager
Storage
Systems Administration Community Group
Testing
Tools Home
Unix File Systems (UFS)
Website Community
X Window System
Xen
ZFS
Zones
Project
ADSL Modem Enhancement
ARC Process Definition
ARM Platform Port
Automatic Data Migration
BIND Update
Bluetooth Stack & Drivers
Brocade FC HBA - Initiator
Brocade FC HBA - Target
Brussels - unified network link configuration
Caiman, Solaris Install Revisited
Celeste
Český portál
Chime Visualization Tool for DTrace
CIFS client for Solaris
CIFS Server
Clearview: Network Interface Coherence
Cluster Agent: Informix Dynamic Server
Cluster Agent: OpenSolaris Container
Cluster Agent: OpenSolaris xVM
Cluster Agent: Oracle E-Business Suite
Cluster agent: PostgreSQL
Cluster Agent: Samba
Cluster Agent: Tomcat
CMT
Coarse Data Flow Parallelism
Colorado: Open HA Cluster on OpenSolaris
Command Assistant
Common Array Manager
Companion - /opt/sfw: Free and Open Source software
COMSTAR: Common Multiprotocol SCSI Target
Content
Contest
CPU Observability
Credentials Process Groups
Crossbow: Network Virtualization and Resource Control
Crypto KMS Agent Toolkit
Cryptographic Framework
Data Migration Manager
Data Tethers
Deutsches Portal
Device Detection Tool
Device Driver Utility
Device Manager
Device Mapper
Direct Rendering Infrastructure & 3D drivers
DTrace Guide
Duckwater: Simplified name services management
Easy Tools
Emancipation
Emulex Fibre Channel Device Driver
Emulex Advanced Ethernet Device Driver
Enable/Enhance Solaris support for Intel Platform
Enhance the support of USB webcams
Enhanced SMF Profiles
Enhancements for AMD-based Platforms
Erlang DTrace Integration
Ethernet bridge module for Solaris
Evaluate Conary
Events Registry
Ext3 file system support
F/OSS Package Base
Facilitation
Fibre Channel over Ethernet
Fine Grained Access Policy (FGAP)
Fingerprint Authentication
Flexible Mandatory Access Control
Forensic Tools
Fully Open X Project
Fuse on Solaris
gcore
Generic Machine Check Architecture Improvements
Google SOC
HA-JBoss
HA-MySQL
Hadoop Live CD
Hitachi
HoneyComb Fixed Content Storage
HPC Stack
Image Packaging System
Improved Performance MIB
Indiana
Innovation Awards
Input Method
Intel Graphics
Internet Key Exchange, version 2
Interrupt Resource Management
IP Datapath Refactoring
IP over Infiniband
IPsec Tunnel Reform
iSCSI Extensions for Remote DMA (iSER)
iSNS Server
JeOS - Just enough Operating System
JKstat - a java binding for libkstat
Journaled File System (JFS)
K Desktop Environment
Kerberos
Kernel Sockets
Kernel SSL Enhancements
Key Management Framework
Korn Shell 93 integration/migration project
Labeled IPsec
LatencyTOP
Layer 2 Filtering
LDoms Manager
Lending
libMicro - portable microbenchmarks
Link Layer Discovery
Live Media: Technologies for distributions running from CD and other media
Locale Data
lofi compression and cryptography support
lx64 brand
Media Management System
Mega_sas
Mexico
MilaX minimal Live Distribution
MIPS Platform Port
Mozilla DTrace
MRSL.NONsharedDevice
Multi-lingual Glossary
Multi-pathing software (MPxIO)
Multiple disk sector size support
Multiple DOI
Muskoka: An open repository for OpenSolaris technical content
Navigator
Nemo: A Framework for High-Performance Networking
Network Auto-Magic
Network Data Management Protocol
Network MIBs
Network Performance Projects
Network Storage
Network Time Protocol (NTP)
Nevada Globalization
New Design of 4over6 Mechanism Based on OpenSolaris
NFS RDMA transport update and performance analysis
NFS Server in non-Global Zones
NFS version 4.1 pNFS
NFSv4 namespace extensions
Nightingale: Port Songbird to OpenSolaris
NPort ID Virtualization (NPIV)
NUMA
Object Storage Device (OSD) support for Solaris
OHACGE Script Based Plug-in
ON/Nevada (ONNV) Project
Open Development Infrastructure
Open HA Cluster Utilities
Open Sound System
OpenGrok
OpenPegasus CIM Server
OpenRTI
OpenSolaris Busybox
OpenSolaris Desktop
OpenSolaris Hispano
OpenSolaris Security Audit
OpenSolaris support for the QEMU processor emulator: host and guest
PEF: Packet Event Framework
Performance Wrappers
Pkgfactory
Polski Portal
Portail Francophone
Portal Brasil
Portals
Power Management Usability Interfaces
Presto: Automatic Printing Configuration
Printable Many Page Solaris Manuals
Promise SuperTrak RAID HBA Driver
QLogic Converged Network Adapter GLDv3 NIC Driver
Quagga Routing Protocol Suite Integration
RAID Configuration Utility
RBridge (IETF TRILL) support
RDMA Offload Framework
Reno: Login Process Enhancements for Interop
Resource Management
s10brand
SAM/QFS
SCM Migration Project
SCSI RDMA Protocol
SDcard Drivers
Sensor Abstraction Layer
Session Initiation Protocol
SFW
Shell: bourne shell, korn shell, C shell, etc.
Sierra: Intel WiFi Chipsets Support
Simple Panels
SM-HBA Based SAS HBA Management
SMF Documentation
Solaris iSCSI Target
Solaris PowerPC Port
SourceJuicer
Sparks: name service switch/nscd enhancements
Squashfs
Star integration/migration project
Starfish
Starter Kit
Storage Power Management
Sun Security Toolkit
Sun StorageTek Availability Suite
Support for OpenFabrics User Verbs / API on OpenSolaris OS
Support gcc4/GCCfss in Solaris
Suspend/Resume
SVR4 Packaging
Systemz
Tamarack: Removable Media Enhancements in Solaris
Tesla: OpenSolaris Enhanced Power Management
Test Development
Tickless Kernel Architecture
TIPC
Trademarks
Trusted networking interface policy database for Trusted Extensions
Trusted Platform Module support
Use Case
Validated Execution Project
Virtual Console
Virtual Network Machines
Visual Panels
Visualization for HPC
Volo
VRRP: Virtual Router Redundancy Protocol Implementation
VSCAN service
Web Stack
Website
Winchester: Schema mapping and ID mapping for AD Interoperability
Wireless USB Support
Wireless Wide Area Network
X Consolidation
x86 Generic FMA Topology Enumerator
Xen Gate
Xfce: A lightweight desktop environment
ZFS Boot and Install
ZFS on disk encryption support
Zone Manager
Zone Statistics
Русский портал
البوابة العربية
भारतीय पोर्टल
中国门户
日本ポータル
한국 포탈
User Group
Adelaide
Argentina
Arizona
Atlanta
Baltimore-Washington
Bangalore
Bangkok
Bangladesh
Beijing
Bélem
Berlin
Bhimavaram
Bloomington
Campus Ambassadors
Capital Region
Cardiff
Ceara
Charlotte
Chengdu
Chennai
Chihuahua
Chile
Cleveland
Colombia
Columbus
Connecticut
Cracow
Czech
Dallas/Ft. Worth
Danish
Delaware
Edinburgh
Egypt
Finland
Florida
Front Range
FuZhou
Great Lakes
Greece
Hangzhou
Hawaii
HeFei
Houston
Hong Kong
Hyderabad
Indonesia
Irish
Israel
Italian
Jinan
Jogja
Kabul
Kansas City
Latvia
London
Madurai
Manchester
Mato Grosso
Melbourne
Minas Gerais
Minnesota
Montreal
Moscow
Mumbai
Munich
NEA
Netherlands
New England
New York City
New Zealand
NIT Hamirpur
Noroeste
Nuremberg-Erlangen
Oklahoma City
Osnabrück
Peru
Philadelphia
Piaski
Pittsburgh
Porto Alegre
Puget Sound
Pune
Queensland
Rio de Janeiro
Research Triangle Park
Romania
Russia
San Antonio
San Diego
San Francisco
São Paulo
Scottish
Serbia
Shanghai
Shenzhen
Silicon Valley
Singapore
Slovak
South African
Southern Connecticut
St. Louis
Stavanger
Sweden
Switzerland
Sydney
Szczecin
Taiwan
Tecum
Thames Valley
Tokyo
Toronto
Trondheim
Tulsa
Turkey
Ukraine
University of Melbourne
Vale do Paraíba
Vancouver
Venezuela
Welsh - Cymru
Wisconsin
Xi'an
Subsites
Code Reviews
Code Repositories
Package Search
Bugster
Bugzilla
Test Machines
Planet
Mailing Lists
Elections & Polls
ARC Case Logs
Source Juicer
Package Factory
User Authentication
Project ppc-dev Pages
Getting Started
FAQ
Files
Kickstarting OpenSolaris on PowerPC
Status
Project Task Map
Low Level Atomic Operations
GNU Toolchain and Host Environment
Bootloader - Net/Disc
Cache Behavior
Cyclic Backend - Timers
Checkpoint and Restore
Console Items
CTF - Compressed Text Format
DDI - Device Driver Interface
DTrace
Hardware Tools for the Target
Installer
ISM
Kernel Inititalization
KMDB / MDB / PMDB
Kernel Context Switching
Kernel Runtime Loader
Module Stubs
MP Support
Openfirmware - VOF
Panic Handling
Platform Specific Modules
Root Nexus
RTLD and ld
System Calls
Exceptions, Traps and Interrupts
User Libraries
User Context Switching
Virtual Memory - HAT
Project Tools
Project Extras


Stumps: Pakistan bowled out for 240 in first Australia Test
by https://www.facebook.com/dunyanewsBRISBANE (Dunya News) – Pakistan batting Thursday collapsed after a solid start by openers Azhar Ali and Shan Masood on the opening day of the first Test match against Australia at the Gabba in Brisbane. The visitors were subsequently bowled out for 240 runs in 86.2 overs.
Pakistan – who at one stage were 75 without loss – collapsed to 94/5 and lost four wickets for three runs at one point. Asad Shafiq remained the top-scorer with 76 runs which included seven boundaries.
Skipper Azhar Ali (39), Mohammad Rizwan (37), Shan Masood (27) and Yasir Shah (26) were the other batsmen to have entered double-figures. Australia will start their batting innings on Friday (tomorrow) as stumps was called on day one.
Earlier, Azhar Ali and Shan Masood reached 57 without loss in the opening session. The visitors were 125/5 at tea.
Pakistan had won the toss and chose to bat on a hot and humid morning in Brisbane, but Azhar Ali saw no demons in the notoriously lively Gabba wicket.
Pakistan had caused a major surprise when they left out experienced seamer Mohammad Abbas, opting instead for pacemen Shaheen Afridi, Imran Khan and 16-year-old Naseem Shah, who were impressive in their lead-up game against Australia A.
"It was difficult to leave out Mohammad Abbas," Azhar said at the toss.
"But sometimes form can take over and we know he’s very good and our number one bowler, but at the moment these three pacers are doing the job and we picked them."
As expected, Australia brought in Joe Burns to open alongside David Warner and recalled Travis Head in the middle order.
Squads
Pakistan: Shan Masood, Azhar Ali (captain), Haris Sohail, Asad Shafiq, Babar Azam, Iftikhar Ahmed, Mohammad Rizwan, Naseem Shah, Yasir Shah, Shaheen Afridi, Imran Khan.
Australia: David Warner, Joe Burns, Marnus Labuschagne, Steve Smith, Travis Head, Matthew Wade, Tim Paine, Nathan Lyon, Pat Cummins, Josh Hazlewood, Mitchell Starc
with inputs from AFP


| Package | Description |
|---|---|
| org.tensorflow.framework |
| Modifier and Type | Method and Description |
|---|---|
static RewriterConfig.Toggle |
RewriterConfig.Toggle.forNumber(int value) |
RewriterConfig.Toggle |
RewriterConfig.getArithmeticOptimization()
Arithmetic optimizations (default is ON)
e.g.
|
RewriterConfig.Toggle |
RewriterConfig.Builder.getArithmeticOptimization()
Arithmetic optimizations (default is ON)
e.g.
|
RewriterConfig.Toggle |
RewriterConfigOrBuilder.getArithmeticOptimization()
Arithmetic optimizations (default is ON)
e.g.
|
RewriterConfig.Toggle |
RewriterConfig.getConstantFolding()
Fold constants (default is ON)
Statically infer the value of tensors when possible, and materialize the
result using constants.
|
RewriterConfig.Toggle |
RewriterConfig.Builder.getConstantFolding()
Fold constants (default is ON)
Statically infer the value of tensors when possible, and materialize the
result using constants.
|
RewriterConfig.Toggle |
RewriterConfigOrBuilder.getConstantFolding()
Fold constants (default is ON)
Statically infer the value of tensors when possible, and materialize the
result using constants.
|
RewriterConfig.Toggle |
RewriterConfig.getDebugStripper()
Strips debug-related nodes from the graph (off by default).
|
RewriterConfig.Toggle |
RewriterConfig.Builder.getDebugStripper()
Strips debug-related nodes from the graph (off by default).
|
RewriterConfig.Toggle |
RewriterConfigOrBuilder.getDebugStripper()
Strips debug-related nodes from the graph (off by default).
|
RewriterConfig.Toggle |
RewriterConfig.getDependencyOptimization()
Control dependency optimizations (default is ON).
|
RewriterConfig.Toggle |
RewriterConfig.Builder.getDependencyOptimization()
Control dependency optimizations (default is ON).
|
RewriterConfig.Toggle |
RewriterConfigOrBuilder.getDependencyOptimization()
Control dependency optimizations (default is ON).
|
RewriterConfig.Toggle |
RewriterConfig.getFunctionOptimization()
Function optimizations (default is ON).
|
RewriterConfig.Toggle |
RewriterConfig.Builder.getFunctionOptimization()
Function optimizations (default is ON).
|
RewriterConfig.Toggle |
RewriterConfigOrBuilder.getFunctionOptimization()
Function optimizations (default is ON).
|
RewriterConfig.Toggle |
RewriterConfig.getLayoutOptimizer()
Optimize tensor layouts (default is ON)
e.g.
|
RewriterConfig.Toggle |
RewriterConfig.Builder.getLayoutOptimizer()
Optimize tensor layouts (default is ON)
e.g.
|
RewriterConfig.Toggle |
RewriterConfigOrBuilder.getLayoutOptimizer()
Optimize tensor layouts (default is ON)
e.g.
|
RewriterConfig.Toggle |
RewriterConfig.getLoopOptimization()
Loop optimizations (default is ON).
|
RewriterConfig.Toggle |
RewriterConfig.Builder.getLoopOptimization()
Loop optimizations (default is ON).
|
RewriterConfig.Toggle |
RewriterConfigOrBuilder.getLoopOptimization()
Loop optimizations (default is ON).
|
RewriterConfig.Toggle |
RewriterConfig.getRemapping()
Remapping (default is ON)
Remap subgraphs onto more efficient implementations.
|
RewriterConfig.Toggle |
RewriterConfig.Builder.getRemapping()
Remapping (default is ON)
Remap subgraphs onto more efficient implementations.
|
RewriterConfig.Toggle |
RewriterConfigOrBuilder.getRemapping()
Remapping (default is ON)
Remap subgraphs onto more efficient implementations.
|
RewriterConfig.Toggle |
RewriterConfig.getScopedAllocatorOptimization()
Try to allocate some independent Op outputs contiguously in order to
merge or eliminate downstream Ops (off by default).
|
RewriterConfig.Toggle |
RewriterConfig.Builder.getScopedAllocatorOptimization()
Try to allocate some independent Op outputs contiguously in order to
merge or eliminate downstream Ops (off by default).
|
RewriterConfig.Toggle |
RewriterConfigOrBuilder.getScopedAllocatorOptimization()
Try to allocate some independent Op outputs contiguously in order to
merge or eliminate downstream Ops (off by default).
|
RewriterConfig.Toggle |
RewriterConfig.getShapeOptimization()
Shape optimizations (default is ON)
Simplify computations made on shapes.
|
RewriterConfig.Toggle |
RewriterConfig.Builder.getShapeOptimization()
Shape optimizations (default is ON)
Simplify computations made on shapes.
|
RewriterConfig.Toggle |
RewriterConfigOrBuilder.getShapeOptimization()
Shape optimizations (default is ON)
Simplify computations made on shapes.
|
static RewriterConfig.Toggle |
RewriterConfig.Toggle.valueOf(org.nd4j.shade.protobuf.Descriptors.EnumValueDescriptor desc) |
static RewriterConfig.Toggle |
RewriterConfig.Toggle.valueOf(int value)
Deprecated.
Use
forNumber(int) instead. |
static RewriterConfig.Toggle |
RewriterConfig.Toggle.valueOf(String name)
Returns the enum constant of this type with the specified name.
|
static RewriterConfig.Toggle[] |
RewriterConfig.Toggle.values()
Returns an array containing the constants of this enum type, in
the order they are declared.
|
| Modifier and Type | Method and Description |
|---|---|
static org.nd4j.shade.protobuf.Internal.EnumLiteMap<RewriterConfig.Toggle> |
RewriterConfig.Toggle.internalGetValueMap() |
| Modifier and Type | Method and Description |
|---|---|
RewriterConfig.Builder |
RewriterConfig.Builder.setArithmeticOptimization(RewriterConfig.Toggle value)
Arithmetic optimizations (default is ON)
e.g.
|
RewriterConfig.Builder |
RewriterConfig.Builder.setConstantFolding(RewriterConfig.Toggle value)
Fold constants (default is ON)
Statically infer the value of tensors when possible, and materialize the
result using constants.
|
RewriterConfig.Builder |
RewriterConfig.Builder.setDebugStripper(RewriterConfig.Toggle value)
Strips debug-related nodes from the graph (off by default).
|
RewriterConfig.Builder |
RewriterConfig.Builder.setDependencyOptimization(RewriterConfig.Toggle value)
Control dependency optimizations (default is ON).
|
RewriterConfig.Builder |
RewriterConfig.Builder.setFunctionOptimization(RewriterConfig.Toggle value)
Function optimizations (default is ON).
|
RewriterConfig.Builder |
RewriterConfig.Builder.setLayoutOptimizer(RewriterConfig.Toggle value)
Optimize tensor layouts (default is ON)
e.g.
|
RewriterConfig.Builder |
RewriterConfig.Builder.setLoopOptimization(RewriterConfig.Toggle value)
Loop optimizations (default is ON).
|
RewriterConfig.Builder |
RewriterConfig.Builder.setRemapping(RewriterConfig.Toggle value)
Remapping (default is ON)
Remap subgraphs onto more efficient implementations.
|
RewriterConfig.Builder |
RewriterConfig.Builder.setScopedAllocatorOptimization(RewriterConfig.Toggle value)
Try to allocate some independent Op outputs contiguously in order to
merge or eliminate downstream Ops (off by default).
|
RewriterConfig.Builder |
RewriterConfig.Builder.setShapeOptimization(RewriterConfig.Toggle value)
Shape optimizations (default is ON)
Simplify computations made on shapes.
|
Copyright © 2020. All rights reserved.


@import tags._ @(account: Account) @help(account, 3){
@messages.at("help.Register")
If you don't have an account, click 'Login' button in the main page.
You will see login dialog popped up. And click 'register' link to switch to registration dialog.
Enter your mobile number and password, then 'Create' button.
We will send you 4-digital verification code.
You will see mobile number verification dialog popped up and receive a SMS message with 4-digital verification code.
Enter the 4-digital verification code in the field to complete the registration.


This page demonstrates and tests the Javascript class: Resizer that can be used to resize divs, text boxes, and iframes. This page specifically tests resizing of a box in two dimensions.
Back to 1d test page.


Pay it Forward (2000) Reviewed by John Sylva
Rating: B
Kevin Spacey, Helen Hunt, and Haley Joel Osment are out to make the world a better place-and no, this isn't the sequel to X-Men.  This time around, Leder (The Peacemaker, Deep Impact) lends her awful directing techniques to Pay it Forward, a film which proposes an idea of the same title: Do something for someone else, something they cannot do by themselves, and instead of that person paying you back, they pay it forward by doing three good things for three other people.
The concept, whose auter is seventh grader Trevor McKinney (Osment), intrigues his social studies class as well as his teacher, Eugene (Spacey), who, on the first day of school, gives his class the assignment of conceiving an idea to change the world. Trevor carries out the idea of paying it forward, his first good deed being that of allowing a homeless heroine addict (James Caviezel) into his home, which doesn't go over too well with his alcoholic mother Arlene (Hunt).
For Trevor's second "pay it forward," he decides to try and hook up Eugene and his mother, but as Arlene states, "You can't just put two people together and make them like each other." Or can he? The relationship between Eugene and Arlene-which at times overwhelms the "pay it forward" concept of the film-is consistently poignant and touching, if not predictable. The climax of their complicated relationship is captured in one of the most moving and powerful sequences seen in a film this year.
The character of Trevor is never fully realized, thereby resulting in the viewer never knowing what makes the creator of "pay it forward" tick or what makes him who he is. The detachment from his mother is obvious and bluntly shown, but the origins and history of Arlene's alcoholism are only touched upon. Attempting to justify Arlene's behavior and problems, the film introduces his once abusing, claimed sober ex (Jon Bon Jovi), but Jovi's restrained presence fails to make ends meet with the subplot.
After appearing in last year's Academy Award Winner for Best Picture, American Beauty and this spring's preachy The Big Kahuna, Kevin Spacey takes a different approach towards his character in a different kind of film, showing a different side to his two-time Academy Award winning acting skills. Spacey's multi-layered performance is effective and commanding, resulting in yet another praise-worthy performance.
One of 1999's greatest success stories, Haley Joel Osment (who received an Oscar nomination for his supporting role in The Sixth Sense), makes what he can with his character's limited dimensions, and provides quite a bit of comic relief while attempting to set up Eugene and Arlene.
Helen Hunt's follow up to her Oscar-winning performance in 1997's As Good As It Gets strengthens my belief that she will become the next big thing in Hollywood. Her work in Pay it Forward is undoubtedly the strongest aspect of the film, taking a character that could have been an obnoxious stereotype (an alcoholic working two jobs to pay the bills), and turning her into a fully-developed, strong individual who the viewer grows to appreciate and sympathize with.
Compelling performances and moments of poignancy are undermined by nonsense plot devices and a parallel story that runs throughout the film, which involves Chris Chandler (the horrid Jay Mohr), who, after receiving a brand new Jaguar from a total stranger and being told to just "pay it forward," goes on a cross-country search of the originator of the concept. Constantly cutting between this and the Trevor/Arlene/Eugene story, Pay it Forward tries to pack too much into one film. The ambitions of Leslie Dixon's screenplay are obvious with the reporter subplot-to show how one idea can spread across a great distance-but as the film continuously traces certain people who have been affected by "pay it forward," the term and idea become overused.
Leder sets up Pay it Forward like a two hour advertisement directed at the Academy, pacing scenes and subplots as if the film's sole purpose is to receive Academy Award nominations. Throughout the film, scenes might as well have a flashing subtitle stating "OSCAR CLIP," but come this February, when the nominees are announced, Leder should find herself sorely disappointed.
Aside from Leder's direction, all technical aspects of the film are superb: Thomas Newton's bouncy and fun musical score adds liveliness to the film and Oliver Stapleton's cinematography captures the diverse settings of Las Vegas, ranging from bright and shining casinos to the squalor of the homeless.
All of the happenings in Pay it Forward build up to a climax which rides a fine line of being tragic and being manipulative, but because the film does not dwell on its final twist, its damage done to the film is minimal. Although, a brief note to Leder and Hollywood both: I am perfectly capable of feeling emotion without the aid of hokey and overly-sappy songs.
The Bottom Line: Despite numerous flaws, the awkward Pay it Forward is a film that deserves to be seen, if only for its three central performances.
Film reviewed October 8th, 2000.
The review above was posted to the
rec.arts.movies.reviews newsgroup (de.rec.film.kritiken for German reviews).
The Internet Movie Database accepts no responsibility for the contents of the
review and has no editorial control. Unless stated otherwise, the copyright
belongs to the author.
Please direct comments/criticisms of the review to relevant newsgroups.
Broken URLs inthe reviews are the responsibility of the author.
The formatting of the review is likely to differ from the original due
to ASCII to HTML conversion.
Related links: index of all rec.arts.movies.reviews reviews


Maid of Lidia:
Perhaps there is a tree with that name. Why would you think I had anything to do with this?


Security Challenges
In today's business world data privacy and data security are becoming a major concern not only for individuals but also for business organizations.
- Data privacy refers to the evolving relationship between technology and the legal right to, or public expectation
of privacy in the collection and sharing of data.
- Data security is the means of ensuring that data is kept safe from corruption and access to it is suitably controlled.
Security Standards
By the global nature of the Web, data privacy and data security compliance include both US and non-US security regulations.
DB2 security features enable organizations to be compliant with standards.
One such standard is Payment Card Industry (PCI) Data Security Standard (DSS).
This regulation is owned and distributed by the PCI Security Standards Council. It is a collaborative effort between major credit card companies
and is designed to protect customers' personal information.
To read more about PCI Security standards click here...
Security Workshop
This workshop demonstrates how DB2 Security features can help customers to become more PCI compliant. An example of a retail store, J.K. Avro Superstore, is used in the workshop.
The arrows in the right pane highlight the PCI requirements that are addressed by the following DB2 Security features :
- Authentication and Authorization
- Roles
- LBAC (Row-level & Column-level)
- Audit
- Data Encryption
- Trusted Context


Equivalent to clicking the Justify command on the Fill submenu of the Edit menu. Rearranges the text in a range so that it fills the range evenly.
Syntax
JUSTIFY()
Related Function
ALIGNMENT Aligns the contents of the selected cells
Return to index


|
Houzi Game Engine
|
Input binary file stream. More...
#include <binary_file_in.hpp>
Public Member Functions | |
| binary_file_in (const std::string &path) | |
| Path constructor. More... | |
| bool | eof () const noexcept final |
| Checks the end of stream indicator. More... | |
| bool | error () const noexcept final |
| Checks the error indicator. More... | |
| size_t | get_byte_count () const noexcept final |
| Retrieves the total number of bytes in the stream. More... | |
| size_t | get_read_byte_count () const noexcept final |
| Retrieves the number of bytes read by the last read operation. More... | |
| size_t | get_read_element_count () const noexcept final |
| Retrieves the number of elements read by the last read operation. More... | |
| byte_position | get_byte_pos () const final |
| Gets the current byte position indicator. More... | |
| binary_stream & | set_byte_pos (byte_position pos) final |
| Sets the current byte position indicator. More... | |
| binary_stream & | move_byte_pos (byte_offset offset) final |
| Moves the current byte position indicator. More... | |
| Public Member Functions inherited from hou::non_copyable | |
| non_copyable () noexcept | |
| default constructor | |
| virtual | ~non_copyable () |
| Destructor. | |
| non_copyable (const non_copyable &)=delete | |
| Deleted copy constructor. | |
| non_copyable (non_copyable &&)=default | |
| Defaulted move constructor. | |
| non_copyable & | operator= (const non_copyable &)=delete |
| Deleted copy assignment operator. | |
| non_copyable & | operator= (non_copyable &&)=default |
| Defaulted move assignment operator. | |
| Public Member Functions inherited from hou::binary_stream_in | |
| virtual | ~binary_stream_in () |
| Destructor. | |
| template<typename T > | |
| std::enable_if_t< is_contiguous_container< T >::value, T > | read_all () |
| Reads the whole contents of the stream into memory. More... | |
| Public Member Functions inherited from hou::stream | |
| virtual | ~stream () |
| Destructor. | |
| Public Member Functions inherited from hou::stream_in | |
| virtual | ~stream_in () |
| Destructor. | |
| template<typename T > | |
| std::enable_if_t< std::is_pod< T >::value &&!is_contiguous_container< T >::value, stream_in > & | read (T &buf) |
| Reads into a pod, not container variable. More... | |
| template<typename T > | |
| std::enable_if_t< is_contiguous_container< T >::value, stream_in > & | read (T &buf) |
| Reads into a contiguous container. More... | |
| template<typename T > | |
| stream_in & | read (T *buf, size_t buf_size) |
| Reads into a specified location in memory. More... | |
Protected Member Functions | |
| void | on_read (void *buf, size_t element_size, size_t buf_size) final |
| Reads into a specified location in memory. More... | |
Additional Inherited Members | |
| Public Types inherited from hou::binary_stream | |
| using | byte_position = long |
| Position indicator representing the number of bytes from the beginning of the file. | |
| using | byte_offset = long |
| Offset of the byte position indicator in bytes. | |
Input binary file stream.
|
explicit |
Path constructor.
Throws if the provided path is not valid.
| path | the path to the file to be opened. |
|
finalvirtualnoexcept |
Checks the end of stream indicator.
Implements hou::stream.
|
finalvirtualnoexcept |
|
finalvirtualnoexcept |
Retrieves the total number of bytes in the stream.
Implements hou::stream.
|
finalvirtual |
Gets the current byte position indicator.
| hou::cursor_error | in case of an error. |
Implements hou::binary_stream.
|
finalvirtualnoexcept |
Retrieves the number of bytes read by the last read operation.
Implements hou::stream_in.
|
finalvirtualnoexcept |
Retrieves the number of elements read by the last read operation.
Implements hou::stream_in.
|
finalvirtual |
Moves the current byte position indicator.
Throws if the offset moves the position indicator to a negative position. Derived classes may have different behaviour when the position is set over the end of the file. a value in the interval [0; byte_count] is always valid.
| offset | the byte position indicator offset. |
| hou::cursor_error | in case of an error. |
Implements hou::binary_stream.
|
finalprotectedvirtual |
Reads into a specified location in memory.
The caller must ensure that the memory range between buf and buf + (element_size * buf_size) is valid. If this is not the case, calling this function results in undefined behaviour.
This function will try to read buf_size elements. If the end of the stream is reached, only part of buf will be written. Use get_read_element_count to determine how many elements were read.
Sets eof if reading over the end of the file. Throws in case of an error while reading.
This function should be overridden by derived classes. all public read functions internally call this function.
| buf | a pointer to the memory location to write into. |
| element_size | the size of a single element to be read. |
| buf_size | the number of elements to be read. |
| hou::read_error | in case of an error. |
Implements hou::stream_in.
|
finalvirtual |
Sets the current byte position indicator.
Throws if pos is negative. Derived classes may have different behaviour when the position is set over the end of the file. a value in the interval [0; byte_count] is always valid.
| pos | the byte position indicator value. |
| hou::cursor_error | in case of an error. |
Implements hou::binary_stream.


|
QuantumLibrary
|
Class implementing the dispatching logic unto worker threads. Used for both coroutines and IO tasks. More...
#include <quantum_dispatcher_core.h>
Public Member Functions | |
| ~DispatcherCore () | |
| void | terminate () final |
| Terminates the object. More... | |
| size_t | size (IQueue::QueueType type, int queueId) const |
| bool | empty (IQueue::QueueType type, int queueId) const |
| QueueStatistics | stats (IQueue::QueueType type, int queueId) |
| void | resetStats () |
| void | post (Task::Ptr task) |
| void | postAsyncIo (IoTask::Ptr task) |
| int | getNumCoroutineThreads () const |
| int | getNumIoThreads () const |
| const std::pair< int, int > & | getCoroQueueIdRangeForAny () const |
| Public Member Functions inherited from Bloomberg::quantum::ITerminate | |
| virtual | ~ITerminate ()=default |
| Virtual destructor. This function is explicitly left empty. More... | |
Friends | |
| class | Dispatcher |
Class implementing the dispatching logic unto worker threads. Used for both coroutines and IO tasks.
|
inline |
|
inline |
|
inline |
|
inline |
|
inline |
|
inline |
|
inline |
|
inline |
|
inline |
|
inline |
|
inlinefinalvirtual |
Terminates the object.
Implements Bloomberg::quantum::ITerminate.
|
friend |


Our system uses formal methods to check the correctness of programming assignments' solutions written by students.
Choose a task and try to solve it!
Your pocket guide to the system's specification format and programming and predicate languages.


BUYProduct Class Reference
| Inherits from | BUYObject : NSObject |
|---|---|
| Declared in | BUYProduct.h |
productId
The product ID
@property (nonatomic, readonly, copy) NSNumber *productId
Declared In
BUYProduct.h
title
The name of the product. In a shop’s catalog, clicking on a product’s title takes you to that product’s page. On a product’s page, the product’s title typically appears in a large font.
@property (nonatomic, readonly, copy) NSString *title
Declared In
BUYProduct.h
handle
The handle of the product. Can be used to construct links to the web page for the product
@property (nonatomic, readonly, copy) NSString *handle
Declared In
BUYProduct.h
vendor
The name of the vendor of the product.
@property (nonatomic, readonly, copy) NSString *vendor
Declared In
BUYProduct.h
productType
A categorization that a product can be tagged with, commonly used for filtering and searching.
@property (nonatomic, readonly, copy) NSString *productType
Declared In
BUYProduct.h
variants
A list of BUYProductVariant objects, each one representing a slightly different version of the product.
@property (nonatomic, readonly, copy) NSArray<BUYProductVariant*> *variants
Declared In
BUYProduct.h
images
A list of BUYImage objects, each one representing an image associated with the product.
@property (nonatomic, readonly, copy) NSArray<BUYImage*> *images
Declared In
BUYProduct.h
options
Custom product property names like “Size”, “Color”, and “Material”. Products are based on permutations of these options. A product may have a maximum of 3 options. 255 characters limit each.
@property (nonatomic, readonly, copy) NSArray<BUYOption*> *options
Declared In
BUYProduct.h
htmlDescription
The description of the product, complete with HTML formatting.
@property (nonatomic, readonly, copy) NSString *htmlDescription
Declared In
BUYProduct.h
available
If the product is in stock (see each variant for their specific availability)
@property (nonatomic, readonly, assign) BOOL available
Declared In
BUYProduct.h
tags
A categorization that a product can be tagged with, commonly used for filtering and searching. Each tag has a character limit of 255.
@property (nonatomic, readonly, copy) NSSet<NSString*> *tags
Declared In
BUYProduct.h
published
The product is published on the current sales channel
@property (nonatomic, readonly, assign) BOOL published
Declared In
BUYProduct.h
createdAtDate
The creation date for a product
@property (nonatomic, readonly, copy) NSDate *createdAtDate
Declared In
BUYProduct.h
updatedAtDate
The updated date for a product
@property (nonatomic, readonly, copy) NSDate *updatedAtDate
Declared In
BUYProduct.h
publishedAtDate
The publish date for a product
@property (nonatomic, readonly, copy) NSDate *publishedAtDate
Declared In
BUYProduct.h


Brandon Walsh
Ph.D. Candidate
Department of English
University of Virginia
Education
- Ph.D. in English, University of Virginia, Charlottesville (in progress).
- M.A. in English, University of Virginia, Charlottesville.
Focus: British Modernism, 20th century Literature (2011).
- B.A. University of Virginia, Charlottesville (2009).
Majors: English Literature (with Distinction, Modern Studies Concentration), Music.
Master’s Thesis
- “Noise and the Novel: The Sound of Literary Modernism”
This study examines sound production and reception in the works of Conrad, Joyce, and Woolf, with special attention to the ways that the “aesthetics of noise” reoriented conditions of labor, community, and the body.
Advisor: Professor Michael Levenson.
Honors and Awards
- Scholars’ Lab Praxis Program Fellowship, UVA, 2011-2012.
- Departmental Service Award, UVA, Spring 2012.
- Summer Graduate Research and Travel Grant, UVA, Spring 2012.
- Summer Graduate Research and Travel Grant, UVA, Spring 2011.
- Master’s Student Representative, Graduate English Students Association, UVA, Spring 2010.
- Graduate Research and Travel Grant, UVA, 2010.
- Awarded Bachelor of Arts with Distinction, UVA, Spring 2009.
- Brander Wyatt Morrison Prize in Music, UVA, Spring 2009.
- Research and Travel Grant, UVA, Summer 2008.
- Departmental Excellence in Music, UVA, Winter 2007.
- Echols Scholar, UVA, Fall 2005.
Peer Review Publications
- “Broken Songs and Machine Noise in Joseph Conrad’s Early Fiction,” Conradiana (forthcoming).
- “A Modern Trumpet Concerto: Edward Green’s Concerto in C for Trumpet and Orchestra and the Poetics of Eli Siegal,” (co-author Paul Neebe), International Trumpet Guild Journal 36.4 (June 2012).
Other Publications
- “Changed, Eh?”: A Report on the XXIII International James Joyce Symposium, Dublin, Ireland, 10-16 June 2012,” James Joyce Quarterly (forthcoming).
- “Free-Access Digital Texts and the Classroom,” guest blog entry, Public Knowledge Journal, Published 2/17/10, http://pkjournal.org/?p=761.
Conferences and Presentations
- "Ulysses: 'Noise in the Street,' Sound of the Self," XIII International James Joyce Symposium, Dublin, Ireland, June 2012.
- "The Waste Land's Onomatopoetics," “Music in Early Twentieth-Century Poetry” panel, The Louisville Conference on Literature and Culture Since 1900, Louisville, Kentucky, February 2012.
- “Curating Coltrane: Kurt Elling’s Vocalese ‘Resolution,’” Southwest Texas Popular Culture and American Culture Association Joint Conference, San Antonio, Texas, April 2011.
- Moderator, “Limits of Communication in the Modern Novel” panel, Sound and Unsound: Noise, Nonsense and the Unspoken Graduate Conference, University of Virginia, Charlottesville, April 2011.
- “Virginia Woolf’s Silent London,” “Sound Minds?” panel, Sound and Unsound: Noise, Nonsense, and the Unspoken Graduate Conference, University of Virginia, Charlottesville, April 2011.
- “Partial Vision: Boylan, Scotoma, and Advertisement in Ulysses,” “Sensing Borders” panel, Making Sense: Thinking & Feeling Texts Graduate Conference, University of Virginia, Charlottesville, April 2010.
- “Adaptation and High Culture: T.S. Eliot’s Appropriation of Dante in Little Gidding,” “Literary Inheritances” panel, Pockets of Change: Cultural Adaptation and Transitions Graduate Conference, University of Queensland, Australia, September 2009.
Courses Taught
- ENGL 3830 History of Literature in English III (1 section, enrollment 20)
- ENWR 3800 Academic and Professional Writing (1 section, enrollment 9)
- ENWR 1510 Accelerated Academic Writing “The Musical: Then and Now” (1 section, enrollment 18)
Other Teaching Experience
- Classroom Volunteer for Ms. Lori Walsh, 40 hours at Achievable Dream Academy, Newport News, VA, Winter 2010.
- Private Music Teacher, taught trumpet, guitar, music theory, composition, and improvisation. Spring 2004-12.
- Invited discussion moderator of Haruki Murakami’s “Super-Frog Saves Tokyo”, UVA Humanities Week Garden Discussion, Spring 2012.
- Invited discussion moderator of Jorge Luis Borges’s “The Circular Ruins,” UVA Literary Breakfast Club Discussion, September 2012.
Professional Service and Affiliations
- Conradiana, reader
- International James Joyce Foundation, member 2012-
- Modernist Studies Association, member 2009-
- Modern Languages Association, member 2009-
Service
- MA Student Orientation Panel, UVA Spring 2012.
- Institute for the Humanities and Global Cultures, Graduate Advisory Board, UVA, Spring 2012.
- Little Red Schoolhouse Batten Project, content developer, UVA, Spring 2012.
- Panelist, MA Applicants to PhD Programs Workshop, UVA, Fall 2011.
- RA for Professor Sandhya Shukla, English Department, UVA. Duties included gathering research materials on ethnic-American autobiography, Vito Marcantonio and racial politics in early twentieth-century Harlem, contemporary Harlem art and music, and the artist Dave McKenzie, Spring 2011.
- Research Assistant for Professor Eric Lott, assembled materials for teaching and research, Summer-Fall 2010.
- Grader for “African American Literature II,” Professor Lisa Woolfork, graded quizzes, papers, midterms, and finals, Spring 2010.
- Research Assistant for Professor Paul Neebe, Fall 2008-Fall 2010.
- Co-Chair, UVA Graduate Conference Committee, 2012.
- Chair, Budget subcommittee for UVA Graduate Conference Committee, 2009-2011.
- GESA representative for the MA graduate class, 2010.
- Panelist, New MA Student Orientation, Fall 2010.
- Organized reading group for Joyce’s Ulysses, led discussion, Summer 2010.
- Co-organized reading group on Music and Literary Theory, Spring 2010.
- Area Committee Participant; 20th century Studies, Recent Novel Reading Group.


Samples
sample 1
Sample 2
Sample 3
Sample 1
Sample 1
Sample 1
My Documents
Invoices
January
February
March


About Save Life Connect
What is this all about?
Project Save Life Connect is an innovative approach to address global health. We provide immediate access to blood donors all over Pakistan, 24 hours a day, 7 days a week!
Save Life Connect is one of several community organizations working together as a network that respond to disasters or emergency situations in an efficient manner.
What we do?
The ultimate goal of this project is to provide an easy-to-use, easy-to-access, efficient, and reliable way to get life-saving blood, free of cost.
Save Life Connect works with network partners to connect blood donors and recipients through an automated SMS (text messaging) service or our mobile application.
Our network of volunteer blood donors are ready to help save lives any time, any place.
How it works?
Our automated system works efficiently whenever someone needs a blood transfusion. Simply post a blood a request within our system, either on this website or by downloading our mobile app.
As soon as a new blood request is raised, it is routed among our local volunteer blood donors.
We know time matters! So we keep you updated with real-time notifications sent directly to you via SMS (text message) or the installed mobile app.
Instead of having to search all over for a blood donor in an emergency situation, you can spend your time consoling the patient.
We keep you updated at each step of the request process, from when a volunteer has been found to when blood is on its way.
Don't have access to internet?
In case, someone is unable to use the mobile application or the website or has not enough knowledge to understand how they can find a blood donor in an emergency, we have an automated SMS (text message) service.
All you need to do is send a text message to 8655, "blood need in ".
It does not need to be in english, you can write in any language you want. Our automated systems are smart enough to understand everything you write
And will interact with you and help you find a blood donor within seconds if not minutes.


One night I really felt like taking something so I searched through my cupboards for something that would affect my sleep. I found some pills called 'Valused'. They're supposed to help with sleep and nervous tension. I took a look at the instructions. They said to take 1-3 pills half an hour before sleep. I was randomly wondering if it was powder or liquid that was in the pills so I cut one open. It was in fact a brown, smelly, liquid. So I swallowed the open pill. I got drowsy pretty quickly after that, I'm guessing because the pill was open hence no time release. Soon after that I took 4 more.
I sat around for a bit, cleared my mind, and got ready to go to sleep. When I finally went to bed I immediately started to fell my body numb slightly and tingle. It was a bit strange and uncomfortable. Then I got this feeling of weightlessness for a while. Usually it takes me a while to fall asleep but this time I was out within a minute or two. My dreams were extremely vivid that night. I tried to become lucid in these dreams but I think I was too sedated. I had long dreams with complicated plots. In one of the dreams I even died and a moment after I died in the dream I woke up with a strange body high. I quickly went back to sleep and had some more crazy dreams.
I woke up very refreshed and felt like I had been sleeping forever. Valerian is definitely a good way to get a deep sleep. I'm sure the other herbs in the pills contributed to the experience but it I think it was mainly the Valerian.
Experience Reports are the writings and opinions of the individual authors who submit them.
Some of the activities described are dangerous and/or illegal and none are recommended by Erowid.


{% extends "base.html" %} {% import "bootstrap/wtf.html" as wtf %} {% block title %}CloudOPC.com{% endblock %} {% block page_content %}
The current date and time is: {{ moment().format('MMMM Do YYYY, h:mm:ss a') }}.
That was {{ moment(current_time).fromNow(refresh=True) }}


01. Main page shows top rental objects.
02. List page and detailed search.
03. Object description page


Form
Form Kits
Notification
0
No new notification
4
Notification
4
1
new registration
1
new orders
2
customers messages
view all
Emily Hart
Emily Hart
<EMAIL_ADDRESS>Profile
Logout
Flat Admin V.2
Dashboard
UI Kits
Grid
Theming
Buttons
Cards
Lists
Modals
Alerts & Toasts
Panels
Loaders
Tabs & Steps
Other
Table
Table
Datatable
Form
Form UI Kits
Components
Pricing Table
Chart.JS
Page Example
Login
Landing Page
Icons
Glyphicons
Font Awesomes
License
Form UI Kits
A ui elements use in form, input, select, etc.
Form Elements
Examples of standard form controls. such as input, textarea, select, checkboxes and radios , static control, etc.
Input
Textarea
Checkboxes and radios
( with
checkbox3
)
Option one is this and that—be sure to include why it's great
Option two is disabled
Option one is this and that—be sure to include why it's great
Option two can be something else and selecting it will deselect option one
Inline
Option1
Option Round
Option Circle
Option 1
Option 2
Option 3
Toggle
( with
bootstrap-switch
)
Select
( with
select2
)
Alaska
Hawaii
California
Nevada
Oregon
Washington
Arizona
Colorado
Idaho
Montana
Nebraska
New Mexico
North Dakota
Utah
Wyoming
Alabama
Arkansas
Illinois
Iowa
Kansas
Kentucky
Louisiana
Minnesota
Mississippi
Missouri
Oklahoma
South Dakota
Texas
Tennessee
Wisconsin
Connecticut
Delaware
Florida
Georgia
Indiana
Maine
Maryland
Massachusetts
Michigan
New Hampshire
New Jersey
New York
North Carolina
Ohio
Pennsylvania
Rhode Island
South Carolina
Vermont
Virginia
West Virginia
Basic example
Email address
Password
File input
Example block-level help text here.
Check me out
Submit
Inline form
Name
Email
Send invitation
Horizontal form
Email
Password
Remember me
Sign in


Located in the San Francisco Bay Area, Mateo Fowler is a artist with a mission of creating arts. Born in 1981, the Mateo has worked for decades in the fields of Digital Arts and Media.
Having worked in partnership with local institutions of education, government, buisnesses and corporations, while at Pop17 I was able to launch my career to new heights. Mateo Fowler has worked in visual arts programming and engaging audiences of with visual arts for years.


Contact information
If you have any comments regarding the BeConverter, I would like to know. If you have any questions about it, I would like to know. If you have any suggestions or requests, I would like to know. If you have found any bugs, then I definitely would like to know. I wouldn't mind a few praises once in a while either ;-)
And don't forget to include your name, since I will be including your name in the contributors list in the credits page of this documentation. Sent them to me at my personal e-mail address:
<EMAIL_ADDRESS><EMAIL_ADDRESS>You can also sometimes find me at Beshare servers under the nick Somebody :)
|| Table of contents ||
Copyright © 2001 Ramshankar. All Rights Reserved.
All cited trademarks and registered trademarks are the property of their respective owners.


Add new Employee
Employee Id
First Name
Last Name
Hair Date
Email
Departments
Human Resources
Information_Technology
Finance
Quality Assurance
Management
Salary
UPDATE


FLORIL TEARS - polyvinyl alcohol and polyethylene glycol 400 solution/ drops
VITALINE S.A.C.
Disclaimer: Most OTC drugs are not reviewed and approved by FDA, however they may be marketed if they comply with applicable regulations and policies. FDA has not evaluated whether this product complies.
Floril TEARS
Active ingredients Purpose
Polyvinyl Alcohol 1,4% Lubricant
Polyethylene Glycol 400 0,2% Lubricant
When using this product
- do not touch the tip of the container to any surface to avoid contamination
- replace cap after each use
- remove contact lenses before using
Stop use and ask a doctor if
- You feel eye pain
- changes in vision occur
- condition worsens or lasts more than 72 hours
Keep our of reach of children.
If swallowed get medical help or contact a Poison Control Center right away.
Inactive ingredients
Benzalkonium chloride, dibasic sodium phosphate, edetate disodium, monobasic sodium phosphate, polysorbate 80, sodium chloride, purified water.
WARNINGS
For external use only.
Do not use if the solution changes color or become cloudy.
Directions
- Put 1 to 2 drops in the affected eyes up to times daily.
Other information
Enter section text here
Uses
- temporary relief of eye dryness and redness due to insufficient production of tears.
- prevents further irritation.
VITALINE S.A.C.


At The
Most
Prestigious
Development
on the Shorelines of Lagos
Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum has been the industry’s standard dummy text ever since the 1500s, when an unknown printer took a galley of type and scrambled it to make a type specimen book.
It has survived not only five centuries, but also the leap into electronic typesetting, remaining essentially unchanged. It was popularised in the 1960s with the release of Letraset sheets containing Lorem Ipsum passages, and more recently with desktop publishing software like Aldus PageMaker including versions of Lorem Ipsum.


Massive update on Darbar opening song! - Tamil News - IndiaGlitz.com
Superstar Rajnikanth who had starred in the blockbuster Petta released this Pongal will be back next year with Darbar, directed by AR Murugadoss. Produced by Lyca Productions, this movie will have Superstar playing a police officer after several decades.
Darbar has music by Anirudh who also composed music for Petta, and the latest update is that the intro song in Darbar is a track named Summa Kizhi. Summa Kizhi will be sung by SP Balasubrahmanyam totally, unlike Petta's Marana Mass song which Anirudh and SPB sang together.
Darbar has Rajnikanth playing a police officer named Aaditya Arunasalam and is paired with Lady Superstar Nayanthara, and the movie also stars Nivetha Thomas, Suniel Shetty, Prateik Babbar, Yogi Babu, Yograj Singh, Shamata Achan and releases on January 9, 2020.
Trending News
Gayathri Raghuram faces an unexpected huge loss!
Popular hero's brother joins Thalapathy 64!
Thalapathy Vijay's 'Bigil' 25 days all territories hit and miss report
Karthi-Lokesh Kanagaraj's 'Kaithi' all territories blockbuster hit collection report
Top comedian with Santhanam in back to back movies!
Ma Nithyananda's shocking allegations against her father - Video
More News
Vanitha Vijayakumar's emotional message to brother Arun Vijay
Popular hero's brother joins Thalapathy 64!
Samantha announces date, year and time of birth of her baby
"Ajith is a gentleman!" TN Minister showers praise!
Breaking! Foreign heroine and villains confirmed for S.S. Rajamouli's 'RRR'
Actress accuses cosmetic surgeon of rape
S.J. Suryah as Thala Ajith's villain?
Top producer plans grand event with CM Edappadi Palanisamy!
Karthi-Lokesh Kanagaraj's 'Kaithi' all territories blockbuster hit collection report
Top comedian with Santhanam in back to back movies!
Popular actor's wife meets Bill Gates!
Gayathri Raghuram faces an unexpected huge loss!
Thalapathy Vijay's 'Bigil' 25 days all territories hit and miss report
Arun Vijay's interesting role in next revealed!
Rajini's thoughts about alliance with Kamal
Kamal opens up about Rajini's miracle speech
Thalapathy Vijay does mimicry to give a pleasant surprise to young director
Headlines
Chennai auto-driver murdered by five men for shocking reason
Two men arrested for posting this TikTok video
Ma Nithyananditha 's shocking allegations against her father - Video
Father electrocutes and slits daughter's throat for shocking reason
Parents of two teenaged girls file case against Nithyanandha
Will stop eating jalebis: Gautam Gambhir's outburst
Man rapes mother, sister, and sister-in-law, murdered by father
Leonardo Dicaprio opens up on major crisis in India
Gautam Gambhir blames Dhoni for this reason
[VIDEO] Congress MLA stabbed in neck
[Video] Shocking: Man drowns in river, friends record video of him dying


Color
Intel® Blue is our primary color and when combined with white, it provides the foundation of the Intel Brand Identity.
Bluescale
- Blues can be used in headlines and subheads.
- Light blue is used to emphasize certain levels of interactivity in harmony with Intel Blue.
- Dark blue can be used discriminately to highlight the Intel master brand logo in the title bar and the Intel branded graphics
- Pale Blue
- #8CDAFA
- r140 g218 b250
- Digital Blue
- #00AEEF
- r0 g174 b239
- Intel Blue
- #0071C5
- r0 g113 b197
- Medium Blue
- #005A9D
- r0 g90 b157
- Dark Blue
- #003C71
- r0 g60 b113
Grayscale
- Can be used for typographic and graphic hierarchies.
- Used throughout the site structurally.
- Charcoal
- #252525
- r37 g37 b37
- Dark Gray
- #555555
- r85 g85 b85
- Gray
- #959595
- r149 g149 b149
- Light Gray
- #D7D7D7
- r215 g215 b215
- Lightest Gray
- #F3F3F3
- r243 g243 b243
Accent Colors
- Used minimally for navigation or in illustrations, (e.g: info-graphics), where necessary.
- Should support Intel Blue for impact.
- Used after all other blues have been used.
- Ideal priority: Yellow, Orange, Green, and lastly Red.
- Green
- #C4D600
- r196 g214 0
- Yellow
- #F3D54E
- r243 g213 b78
- Orange
- #FFA300
- r255 g163 0
- Red-Orange
- #FC4C02
- r252 g76 b2
- Red
- #ED1C24
- r237 g28 b36
- Dark Red
- #CE181D
- r206 g24 b29
Blade/Component background color options
- Strategic thought should be put into background color selection for each communication's unique purpose.
- Dependent on the content and nature of the message. use background colors to separate sections of the page.
- Take care to not make pages feel too striped.
- White
- #FFFFFF
- r255 g255 b255
- Intel Blue
- #0071C5
- r0 g113 b197
- Dark Blue
- #003C71
- r0 g60 b113
- Lightest Gray
- #F3F3F3
- r243 g243 b243
Typography
Throughout the site the use of bold typography creates stronger hierarchies and adds visual impact across the site; Intel Clear and Intel Clear Pro are used in conjunction to give an ample palette for design iterations.
Title: Intel Clear Pro
A B C D E F G H I J K L M N O P Q R S T U V W X Y Z
1 2 3 4 5 6 7 8 9 0 ! @ $ % ^ & * ( ) _ +
The new typeface, Intel� Clear Pro Bold, is a main component of Intel's new brand identity. It is only available in upper case and is reserved for headline usage to best communicate the new Performance look and feel.
Header & Titles
Title: Intel Clear
A B C D E F G H I J K L M N O P Q R S T U V W X Y Z
a b c d e f g h i j k l m n o p q r s t u v w x y z
1 2 3 4 5 6 7 8 9 0 ! @ $ % ^ & * ( ) _ +
The standard font, Intel® Clear, remains the primary font for body copy and subheads.
Header & Titles
Body Copy
Commodo sed quae autem singularis Melior roto jugis pagus qui wisi pecus vel mara sed. Saepius ideo consectetuer bis interdico minim ibidem erat ibidem interdico consequat defui. Quibus vel abdo gilvus macto nimis vel premo ventosus.
"Tego occuro nisl fere os gemino. Ex verto illum adsum loquor capio blandit."-Titus Andronicus
Body
Paragraphs
Block quote:
Links:
Images
To standardize image sizes, all graphics must fit within one of the following three formats, designers need only deliver each asset in the largest pixel size needed, renditions will be automated on the back end.
16x9
4x3
1x1
Theming
Theming allows for a more robust experience for both content creators and consumers. It allows components and blades to be flexible enough to be able to perform tasks such as hierarchy, content separation, and overall better flow to pages.
White Theme
Typography
Links:
Dark Blue Theme
Typography
Links:
Brand Primary Theme
Typography
Links:
Light Gray Theme
Typography
Links:
Buttons & Links
Notifications
Input Error
Error Message
Grid
Intel.com includes a responsive, mobile-first grid system that appropriately scales up to 12 columns.


SETTINGS
OPENi
My Profile
Let apps access my profile such as name, picture and other account information.
Assign the following alterations to:
OPENi Account
Username
John
Usertype
Person
Email
<EMAIL_ADDRESS>Password
xxxxxxxxx
Printrest
Facebook


Main Navigation
Portfolio
Contact
About
Home
Projects
Bluesteel Beer
Resolve Beer
Gold Bond
Air Canada
Herbalife Social Media
United Parcel Service


--- layout: post title: 'Prof. T. Duck asks about the missing $35million the #HarperGovnt promised for atmospheric research? #TOStar #westernu' date: '2012-03-05T08:14:00.001-05:00' author: Bob Sica tags: - atmosphere - climate - science modified_time: '2012-03-05T08:14:04.651-05:00' blogger_id: tag:blogger.com,1999:blog-736339229338318027.post-1237879168994217474 blogger_orig_url: http://blog.purplecrowlidar.ca/2012/03/prof-t-duck-asks-about-missing.html ---
OpEd piece from the Toronto Star.
http://www.thestar.com/opinion/editorialopinion/article/1140330--ottawa-squan...


--- layout: newsstory title: BIG GAMES COMING UP match: DMC Yeltz P Chippenham P ---
With the freezing weather cancelling the League Cup semi-final against Chippenham (provisionally rearranged for March 4th), we need to pick up some points in the League very quickly.
We've got an excellent chance to do just that, with the next 3 games against Chelmsford and Weymouth at The Grove and then Ilkeston away. We can, and probably must, take 9 points from those games, so it's really the crucial part of what's been a difficult season so far. However I've still got every confidence we can do it. Come on!


Home
(current)
{% if session.user %}
Shop
Cart
My Profile
Feedback
Logout
{%else%}
About Us
(current)
Contact Us
(current)
Login
Register
Adminlogin
{% endif %}
{% include "includes/_message.html" %} {% block body%} {% endblock %}


Simply put, I don't collect, store or look at any information about you or your friends through the use of this app. Use of this app is completely private and (almost) completely anonymous.
The permissions you grant allow enable the filtering mechanism that can hide or show your friends based on their details. All of the data is only transferred between your Facebook and your web browser. When you stop using the app the data is deleted from your browser (it remains on Facebook).
I do currently log your user name to Google Analytics so that I can track how many people are using the App. I don't track anything other than you have opened the app. Whatever you do with the app is completely private and will always remain so.
I do not request any permissions that would allow me to edit your Facebook details, or post to your wall or anything horrible like that. I treat your privacy with as much, or more, respect than I would my own.
Sincerely,
Simon Gardner
Holistic Systems


WEAVING TOGETHER SILHOUETTES OF TRADITIONAL NORSE PAGAN DRESS AND THE HYPER FEMININE DRESS OF THE 1970s. THIS BLEND OF SILHOUETTES IS VERY IMPORTANT AT ADDING CONTEXT TO THE DESIGNS AND HELPS FORGE MY VISION OF HOW I, AS A DESIGNER, INTERPRET A NEW FORM OF MASCULINITY.