Table Of Contents
Configuring Security Contexts
Security Context Overview
Common Uses for Security Contexts
Unsupported Features
Context Configuration Files
Context Configurations
System Configuration
Admin Context Configuration
How the FWSM Classifies Packets
Valid Classifier Criteria
Invalid Classifier Criteria
Classification Examples
Sharing Interfaces Between Contexts
NAT and Origination of Traffic
Sharing an Outside Interface
Sharing an Inside Interface
Enabling or Disabling Multiple Context Mode at the CLI
Backing Up the Single Mode Configuration
Enabling Multiple Context Mode
Restoring Single Context Mode
Managing Memory for Rules
About Memory Partitions
Default Rule Allocation
Setting the Number of Memory Partitions
Changing the Memory Partition Size
Reallocating Rules Between Features for a Specific Memory Partition
Configuring Resource Classes
Classes and Class Members Overview
Resource Limits Overview
Default Class Overview
Class Members Overview
Adding a Resource Class
Monitoring Context Resource Usage
Configuring Security Contexts
Configuring Security Contexts
This chapter includes the following sections:
•Security Context Overview
•Enabling or Disabling Multiple Context Mode at the CLI
•Managing Memory for Rules
•Configuring Resource Classes
•Configuring Security Contexts
Security Context Overview
You can partition a single FWSM into multiple virtual devices, known as security contexts. Each context has its own security policy, interfaces, and administrators. Multiple contexts are similar to having multiple standalone devices. Many features are supported in multiple context mode, including routing tables, firewall features, and management. Some features are not supported, including most dynamic routing protocols.
This section provides an overview of security contexts, and includes the following topics:
•Common Uses for Security Contexts
•Unsupported Features
•Context Configuration Files
•How the FWSM Classifies Packets
•Sharing Interfaces Between Contexts
Common Uses for Security Contexts
You might want to use multiple security contexts in the following situations:
•You are a service provider and want to sell security services to many customers. By enabling multiple security contexts on the FWSM, you can implement a cost-effective, space-saving solution that keeps all customer traffic separate and secure, and also eases configuration.
•You are a large enterprise or a college campus and want to keep departments completely separate.
•You are an enterprise that wants to provide distinct security policies to different departments.
•You have any network that requires more than one firewall.
Unsupported Features
Multiple context mode does not support the following features:
•Most dynamic routing protocols. BGP stub mode is supported.
Security contexts support only static routes or BGP stub mode. You cannot enable OSPF or RIP in multiple context mode.
•Multicast routing. Multicast bridging is supported.
Context Configuration Files
This section describes how the FWSM implements multiple context mode configurations and includes the following sections:
•Context Configurations
•System Configuration
•Admin Context Configuration
Context Configurations
The FWSM includes a configuration for each context that identifies the security policy, interfaces, and almost all the options you can configure on a standalone device. You can store context configurations on the internal Flash memory or the external Flash memory card, or you can download them from a TFTP, FTP, or HTTP(S) server.
System Configuration
The system administrator adds and manages contexts by configuring each context configuration location, allocated interfaces, and other context operating parameters in the system configuration, which, like a single mode configuration, is the startup configuration. The system configuration identifies basic settings for the FWSM. The system configuration does not include any network interfaces or network settings for itself; rather, when the system needs to access network resources (such as downloading the contexts from the server), it uses one of the contexts that is designated as the admin context. The system configuration does include a specialized failover interface for failover traffic only.
Admin Context Configuration
The admin context is just like any other context, except that when a user logs in to the admin context, then that user has system administrator rights and can access the system and all other contexts. The admin context is not restricted in any way, and can be used as a regular context. However, because logging into the admin context grants you administrator privileges over all contexts, you might need to restrict access to the admin context to appropriate users. The admin context must reside on Flash memory, and not remotely.
If your system is already in multiple context mode, or if you convert from single mode, the admin context is created automatically as a file on the internal Flash memory called admin.cfg. This context is named "admin." If you do not want to use admin.cfg as the admin context, you can change the admin context.
How the FWSM Classifies Packets
Each packet that enters the FWSM must be classified, so that the FWSM can determine to which context to send a packet. The FWSM uses only one global MAC address across all interfaces. A single MAC address is usually not a problem unless multiple contexts want to share an interface. A router cannot direct packets to IP addresses on the same network if all IP addresses resolve to the same MAC address. Moreover, the bridging table of the switch would constantly change as the MAC address moves from one interface to another. The purpose of the security context classifier is to resolve this situation.
This section includes the following topics:
•Valid Classifier Criteria
•Invalid Classifier Criteria
•Classification Examples
Valid Classifier Criteria
If only one context is associated with the ingress interface, the FWSM classifies the packet into that context. In transparent firewall mode, unique interfaces for contexts are required, so this method is used to classify packets at all times. The only exception in transparent mode is for a shared management VLAN; for management traffic destined for an interface, the interface IP address is used for classification.
If multiple contexts share an interface, then the classifier intercepts the packet and performs a destination IP address lookup. All other fields are ignored; only the destination IP address is used. To use the destination address for classification, the classifier must have knowledge about the subnets located behind each security context. The classifier relies on active NAT sessions to determine the subnets in each context. Active NAT sessions are created either by static commands, which create a permanent session, or by active dynamic NAT sessions.
For example, the classifier gains knowledge about subnets <IP_ADDRESS>, <IP_ADDRESS> and <IP_ADDRESS> when the context administrators configure static commands in each context:
•Context A:
static (inside,shared) <IP_ADDRESS> <IP_ADDRESS> netmask <IP_ADDRESS>
•Context B:
static (inside,shared) <IP_ADDRESS> <IP_ADDRESS> netmask <IP_ADDRESS>
•Context C:
static (inside,shared) <IP_ADDRESS> <IP_ADDRESS> netmask <IP_ADDRESS>
If you use dynamic NAT, an active NAT session is created when the real host creates a connection through the shared interface. For traffic returning to the host, the active NAT session is used to classify the packet.
To quickly identify possible overlaps between different contexts, a situation that leads to connectivity problems, enter the show np 3 static command in the system execution space.
Note For management traffic destined for an interface, the interface IP address is used for classification.
Invalid Classifier Criteria
The following configurations are not used for packet classification:
•NAT exemption—The classifier does not use a NAT exemption configuration for classification purposes because NAT exemption does not identify the mapped (shared) interface.
•Routing table—The classifier does not use the routing table for classification. For example, if a context includes a static route that points to an external router as the next-hop to a subnet, and a different context includes a static command for the same subnet, then the classifier uses the static command to classify packets destined for that subnet and ignores the static route.
Classification Examples
Figure 10-1 shows multiple contexts sharing an outside interface, while the inside interfaces are unique, allowing overlapping IP addresses. The classifier assigns the packet to Context B because Context B includes the address translation that matches the destination address.
Figure 10-1 Packet Classification with a Shared Interface
Note that all new incoming traffic must be classified, even from inside networks. Figure 10-2 shows a host on the Context B inside network accessing the Internet. The classifier assigns the packet to Context B because the ingress interface is VLAN 300, which is assigned to Context B.
Figure 10-2 Incoming Traffic from Inside Networks
Figure 10-3 shows a transparent firewall with a host on the Context B inside network accessing the Internet. The classifier assigns the packet to Context B because the ingress interface is VLAN 300, which is assigned to Context B.
Figure 10-3 Transparent Firewall Contexts
Sharing Interfaces Between Contexts
The FWSM lets you share an interface between contexts. For transparent mode, you can only share a management-only VLAN; all through-traffic interfaces must be unique. For management traffic destined for an interface, the interface IP address is used for classification. For non-management-only VLANs in routed mode, packet classification requirements might make sharing interfaces impractical. Because the classifier relies on active NAT sessions to classify the destination addresses to a context, the classifier is limited by how you can configure NAT. If you do not want to perform NAT, you must use unique interfaces.
Note The FWSM does not support sharing the outside interface of one context with the inside interface of another context (known as cascading contexts). Traffic that is outbound from one context(from a higher to a lower security interface) can only enter another context as inbound traffic (lower to higher security); it cannot be outbound for both contexts, or inbound for both contexts.
This section includes the following topics:
•NAT and Origination of Traffic
•Sharing an Outside Interface
•Sharing an Inside Interface
NAT and Origination of Traffic
The type of NAT configured determines whether the traffic can originate on the shared interface or if it can only respond to an existing connection. When you use dynamic NAT, you cannot initiate a connection to the real addresses. Therefore, traffic from the shared interface must be in response to an existing connection. Static NAT, however, lets you initiate connections, so you can initiate connections on the shared interface.
Sharing an Outside Interface
When you have an outside shared interface (connected to the Internet, for example), the destination addresses on the inside are limited, and are known by the system administrator, so configuring NAT for those addresses is easy, even if you want to configure static NAT.
Sharing an Inside Interface
Configuring an inside shared interface poses a problem, however, if you want to allow communication between the shared interface and the Internet, where the destination addresses are unlimited. For example, if you want to allow inside hosts on the shared interface to initiate traffic to the Internet, then you need to configure static NAT statements for each Internet address. This requirement necessarily limits the kind of Internet access you can provide for users on an inside shared interface. (If you intend to statically translate addresses for Internet servers, then you also need to consider DNS entry addresses and how NAT affects them. For example, if a server sends a packet to www.example.com, then the DNS server needs to return the translated address. Your NAT configuration determines DNS entry management.)
Figure 10-4 shows two servers on an inside shared interface. One server sends a packet to the translated address of a web server, and the FWSM classifies the packet to go through Context C because it includes a static translation for the address. The other server sends the packet to the real untranslated address, and the packet is dropped because the FWSM cannot classify it.
Figure 10-4 Originating Traffic on a Shared Interface
Enabling or Disabling Multiple Context Mode at the CLI
Your FWSM might already be configured for multiple security contexts depending on how you ordered it from Cisco. If you are upgrading, however, you might need to convert from single mode to multiple mode by following the procedures in this section. ASDM does not support changing modes, so you need to change modes using the CLI.
This section includes the following topics:
•Backing Up the Single Mode Configuration
•Enabling Multiple Context Mode
•Restoring Single Context Mode
Backing Up the Single Mode Configuration
When you convert from single mode to multiple mode, the FWSM converts the running configuration into two files. The original startup configuration is not saved, so if it differs from the running configuration, you should back it up before proceeding.
Enabling Multiple Context Mode
The context mode (single or multiple) is not stored in the configuration file, even though it does endure reboots. If you need to copy your configuration to another device, set the mode on the new device to match using the mode command.
When you convert from single mode to multiple mode, the FWSM converts the running configuration in to two files: a new startup configuration that comprises the system configuration, and admin.cfg that comprises the admin context (in the root directory of the internal Flash memory). The original running configuration is saved as old_running.cfg (in the root directory of the internal Flash memory). The original startup configuration is not saved. The FWSM automatically adds an entry for the admin context to the system configuration with the name "admin."
To enable multiple mode, enter the following command:
hostname(config)# mode multiple
You are prompted to reboot the FWSM.
Restoring Single Context Mode
If you convert from multiple mode to single mode, you might want to first copy a full startup configuration (if available) to the FWSM; the system configuration inherited from multiple mode is not a complete functioning configuration for a single mode device. For example, you can restore the old single-mode running configuration, if available, as the startup configuration. Because the system configuration does not have any network interfaces as part of its configuration, you must access the FWSM from a switch session to perform the copy.
To copy the old running configuration to the startup configuration and to change the mode to single mode, perform the following steps in the system execution space:
Step 1 To copy the backup version of your original running configuration to the current startup configuration, enter the following command in the system execution space:
hostname(config)# copy old_running.cfg startup-config
Step 2 To set the mode to single mode, enter the following command in the system execution space:
hostname(config)# mode single
The FWSM reboots.
Managing Memory for Rules
The FWSM supports a fixed number of rules for the entire system. In multiple context mode, the FWSM partitions the memory allocated to rule configuration, and assigns each context to a partition. This section describes how rule allocation works and how to manage memory partitions; it includes the following topics:
•About Memory Partitions
•Default Rule Allocation
•Setting the Number of Memory Partitions
•Changing the Memory Partition Size
•Reallocating Rules Between Features for a Specific Memory Partition
About Memory Partitions
In multiple context mode, the FWSM partitions the memory allocated to rule configuration, and assigns each context to a partition. By default, a context belongs to one of 12 partitions that offers a maximum number rules, including ACEs, AAA rules, and others. See the "Default Rule Allocation" section for a list of rule limits.
The FWSM assigns contexts to the partitions in the order they are loaded at startup. For example, if you have 12 contexts and the maximum number of rules is 14,103, each context is assigned to its own partition, and can use 14,103 rules. If you add one more context, then context number 1 and the new context number 13 are both assigned to partition 1, and can use 14,103 rules divided between them; the other 11 contexts continue to use 14,103 rules each. If you delete contexts, the partition membership does not shift, so you might have some unequal distribution until you reboot, at which time the contexts are evenly distributed.
Note Rules are used up on a first come, first served basis, so one context might use more rules than another context.
You can manage memory partitions by manually assigning a context to a partition (see the "Configuring Security Contexts" section); reducing the number of partitions to better match the number of contexts you have (see the "Setting the Number of Memory Partitions" section); changing the size of a partition (see the "Changing the Memory Partition Size" section); and reallocating rules between features (see the "Reallocating Rules Between Features for a Specific Memory Partition" section).
Default Rule Allocation
Table 10-1 lists the default number of rules for each feature type in multiple context mode, for the default 12 memory partitions.
Note Some access lists use more memory than others. Depending on the type of access list, the actual limit the system can support will be less than the maximum. See the "Maximum Number of ACEs" section on page 12-5 for more information about ACEs and memory usage.
Table 10-1 Default Rule Allocation
Specification
|
Maximum per Partition (with 12 1 Partitions)
|
AAA Rules
|
1345
|
ACEs
|
14,801
|
established commands2
|
96
|
Filter Rules
|
576
|
ICMP, Telnet, SSH, and HTTP Rules
|
384
|
Policy NAT ACEs3
|
384
|
Inspect Rules
|
1537
|
Total Rules
|
19,219
|
Setting the Number of Memory Partitions
This section describes how to change the number of partitions.
Guidelines
Caution Failure to follow these guidelines might result in dropped access list configuration as well as other anomalies, including ACL tree corruption.
•The target partition and rule allocation settings must be carefully calculated, planned, and preferably tested in a non-production environment prior to making the change to ensure that all existing contexts and rules can be accommodated.
•When failover is used, both FWSMs need to be reloaded at the same time after making partition changes. Reloading both FWSMs causes an outage with no possibility for a zero-downtime reload. At no time should two FWSMs with a mismatched number of partitions or rule limits synchronize over failover.
•Changing the number of partitions requires you to reload the FWSM.
•When increasing the number of partitions, the default size of each partition is reduced.
•If you manually configured the partition sizes (see the "Changing the Memory Partition Size" section), the sizes you set might not be compatible with the new smaller partition sizes.
•If the current configured sizes do not fit into the new partitions, then the FWSM rejects the new memory partition configuration.
•The FWSM also checks the rule allocation (see the "Reallocating Rules Between Features for a Specific Memory Partition" section). If you manually allocated rules between features so that the total number of rules allocated is now greater than those available, then the FWSM rejects the new memory partition configuration. Similarly, if the absolute maximum number of rules for a feature is now exceeded, then the FWSM rejects the new memory partition configuration.
Detailed Steps
To change the number of memory partitions, perform the following steps:
Step 1 (Optional) To view the current mapping of contexts to memory partitions, enter the following command from Tools > Command Line Interface:
show resource acl-partition
The following sample output shows that 2 memory partitions are configured:
Total number of configured partitions = 2
List of Contexts :bandn, borders
Number of contexts :2(RefCount:2)
Number of rules :0(Max:53087)
List of Contexts :admin, momandpopA, momandpopB, momandpopC
Number of contexts :5(RefCount:5)
Number of rules :6(Max:53087)
For information about exclusive and non-exclusive partitions, see the "Configuring Security Contexts" section.
Step 2 In the System execution space, from the Configuration > Device Management > Resource Allocation > Local Rules pane, set the number of partitions in the Number of ACL Partitions field, between 1 and 12.
Note If you assign a context to a partition, the partition numbering starts with 0. So if you have 12 partitions, the partition numbers are 0 through 11. See the "Configuring Security Contexts" section to assign contexts to partitions.
Step 3 Click Apply.
Step 4 To reload the FWSM so the change can take effect, choose Tools > System Reload.
If you are using failover, wait a few seconds before reloading the standby unit as well; the standby unit does not reload automatically, and the memory partitions must match on both units. Traffic loss can occur because both units are down at the same time.
Note If you add a secondary unit at a later date, then after the new secondary unit synchronizes the configuration, immediately reload the secondary unit so that the memory partitions are the same. During the initial synchronization, the configuration might not fit properly in the secondary unit memory partitions, but after reloading, and another configuration synchronization, the secondary unit will be operational.
Changing the Memory Partition Size
The FWSM lets you set the memory size of each partition.
Guidelines
Caution Failure to follow these guidelines might result in dropped access list configuration as well as other anomalies, including ACL tree corruption.
•The target partition and rule allocation settings must be carefully calculated, planned, and preferably tested in a non-production environment prior to making the change to ensure that all existing contexts and rules can be accommodated.
•When failover is used, both FWSMs need to be reloaded at the same time after making partition changes. Reloading both FWSMs causes an outage with no possibility for a zero-downtime reload. At no time should two FWSMs with a mismatched number of partitions or rule limits synchronize over failover.
•Changing the partition sizes requires you to reload the FWSM.
•Change the number of partitions before you set the partition sizes; changing the number of partitions affects the overall number of rules per partition. If you increase the number of partitions, for example, then the number of rules available per partition will be smaller. Therefore, your partition size configuration might be invalid, and you might need to reconfigure all your partition sizes. Changing the number of partitions requires you to reload the FWSM before you change the partition sizes; then changing the partition sizes requires a second reload.
•Allocate contexts to specific partitions before you set the partition sizes (see the "Configuring Security Contexts" section). If you plan all your partition sizes based on the contexts currently assigned to a partition, but you did not specifically allocate the contexts, then you run the risk of context assignments shifting after a reload (for example if you add or subtract contexts).
•Reduce the size of partition(s) before increasing the size of other partition(s). The FWSM rejects any increases in size if there is not free space available.
•If the existing number of ACEs does not fit into the new partition size, then the resizing is rejected.
•In addition to the memory partitions to which the FWSM assigns contexts, the FWSM uses a backup tree partition to process changes to rules so traffic can continue to use the old configuration until the new configuration is ready. The backup tree must be as large as the largest partition. Therefore, some memory is automatically assigned to the backup tree in tandem with the largest partition; so be sure to include the backup tree in your calculations.
•If you reduce the size of a partition, the FWSM checks the rule allocation (see the "Reallocating Rules Between Features for a Specific Memory Partition" section). If you manually allocated rules between features so that the total number of rules allocated is now greater than those available, then the FWSM rejects the resizing of the partition. Similarly, if the absolute maximum number of rules for a feature is now exceeded, then the FWSM rejects the resizing of the partition.
Detailed Steps
To set the size of the memory partitions, perform the following steps:
Step 1 From the System execution space, go to the Configuration > Device Management > Resource Allocation > Local Rules pane.
The Current Configured Size column shows the number of rules that currently assigned to each partition. The backup tree partition (not configurable) is used to process changes to rules so traffic can continue to use the old configuration until the new configuration is ready.
The total number of rules avalable displays at the bottom of the table.
Step 2 Calculate how you want to resize the partitions. Note that the backup tree must be as large as the largest partition. Therefore, some memory is automatically assigned to the backup tree in tandem with the largest partition; so be sure to include the backup tree in your calculations.
For example, if you reduce the sizes of partitions 0 through 5 to 15,000, then after applying your change, ASDM shows that you have 25,314 rules to reallocate to other partitions.
Partition
|
Bootup Partition Size
|
Configured Size
|
Difference
|
0
|
19219
|
15000
|
4219
|
1
|
19219
|
15000
|
4219
|
2
|
19219
|
15000
|
4219
|
3
|
19219
|
15000
|
4219
|
4
|
19219
|
15000
|
4219
|
5
|
19219
|
15000
|
4219
|
| |
|
|
Total Reduced: 25314
|
If you want to distribute the rules evenly across the other 6 partitions plus the backup tree, then you can add 3616 rules to each (with 2 left over). Remember that the backup tree must be as large as the largest partition, so you must consider the backup tree in your calculations. For example, if you want to make partition 6 have 24,001 rules, then you can allocate the rules like this:
Partition
|
Bootup Partition Size
|
Configured Size
|
Difference
|
6
|
19219
|
24001
|
4782
|
Backup Tree
|
19219
|
24001
|
4782
|
7
|
19219
|
22369
|
3150
|
8
|
19219
|
22369
|
3150
|
9
|
19219
|
22369
|
3150
|
10
|
19219
|
22369
|
3150
|
11
|
19219
|
22369
|
3150
|
| |
|
|
Total Increased: 25314
|
Step 3 You must reduce the size of partitions before you can increase any sizes. For a partition you want to reduce, double-click the partition row, or click Edit.
The Resource Rule dialog box appears.
Step 4 In the Partition Size field, enter a new number.
By default, the rule allocations are adjusted to the default settings for the new size.
a. If you previously reallocated rules to be specific values (as opposed to "default") then you must reduce the total number of rules to fit the new partition size either by entering new numbers or by choosing "default" for all features. See the "Reallocating Rules Between Features for a Specific Memory Partition" section for more information.
b. Click OK.
Step 5 To reduce the size of other partitions, repeat Steps 3 and 4.
Step 6 Click Apply to apply all size reductions.
Step 7 To increase a partition, double-click the partition row, or click Edit.
The Resource Rule dialog box appears.
Step 8 In the Partition Size field, enter a new number, and click OK.
By default, the rule allocations are adjusted to the default settings for the new size.
You cannot increase the total number of rules per feature until after you reload the FWSM. After you reload, you can change the rule allocation according to the "Reallocating Rules Between Features for a Specific Memory Partition" section.
Step 9 To increase the size of other partitions, repeat Steps 7 and 8.
Step 10 Click Apply to apply all size increases.
Step 11 To reload the FWSM so the change can take effect, choose Tools > System Reload.
If you are using failover, wait a few seconds before reloading the standby unit as well; the standby unit does not reload automatically, and the memory partitions must match on both units. Traffic loss can occur because both units are down at the same time.
Note If you add a secondary unit at a later date, then after the new secondary unit synchronizes the configuration, immediately reload the secondary unit so that the memory partitions are the same. During the initial synchronization, the configuration might not fit properly in the secondary unit memory partitions, but after reloading, and another configuration synchronization, the secondary unit will be operational.
Reallocating Rules Between Features for a Specific Memory Partition
To set the rule allocation globally for all partitions, see the "Reallocating Rules Between Features" section on page 2-8. Setting the rule allocation for a specific partition overrides the global setting.
For information about setting the partition size, see the "Changing the Memory Partition Size" section.
Guidelines
Caution Failure to follow these guidelines might result in dropped access list configuration as well as other anomalies, including ACL tree corruption.
•The target partition and rule allocation settings must be carefully calculated, planned, and preferably tested in a non-production environment prior to making the change to ensure that all existing contexts and rules can be accommodated.
•When failover is used, both FWSMs need to be reloaded at the same time after making partition changes. Reloading both FWSMs causes an outage with no possibility for a zero-downtime reload. At no time should two FWSMs with a mismatched number of partitions or rule limits synchronize over failover.
Detailed Steps
To reallocate rules for a given partition, perform the following steps:
Step 1 To view the total number of rules available per partition, the default values, current rule allocation, and the absolute maximum number of rules you can allocate per feature, enter the following command using Tools > Command Line Interface:
show resource rule partition [number]
For example, the following display shows the maximum rules as 19219 for partition 0 (this is an example only, and might differ from the actual number of rules for your system):
show resource rule partition 0
Result of the command: "show resource rule partition 0"
Default Configured Absolute
-----------+---------+----------+---------
-----------+---------+----------+---------
Partition Limit - Configured Limit = Available to allocate
Note If you increase the size of a partition but have not yet reloaded, the maximum number of rules remains at the old smaller size. You have to reload to see the increased limits. If you decrease the size of a partition but have not yet reloaded, the new smaller number of rules is reflected right away.
Step 2 To view the number of rules currently being used so you can plan your reallocation, enter the following command at the Command Line Interface tool.
show np 3 acl count partition_number
For example, the following is sample output from the show np 3 acl count 0 command, and shows the number of inspections (Fixup Rule) close to the maximum of 9216. You might choose to reallocate some access list rules (ACL Rule) to inspections.
Result of the command: "show np 3 acl count 0"
-------------- CLS Rule Current Counts --------------
CLS Filter Rule Count : 0
CLS Fixup Rule Count : 9001
CLS Est Ctl Rule Count : 4
CLS Est Data Rule Count : 4
CLS Console Rule Count : 16
CLS Policy NAT Rule Count : 0
CLS ACL Rule Count : 30500
CLS ACL Uncommitted Add : 0
CLS ACL Uncommitted Del : 0
Note The established command creates two types of rules, control and data. Both of these types are shown in the display, but you allocate both rules by setting the number of established commands; you do not set each rule separately.
Step 3 To reallocate rules between features, go to System > Configuration > Device Management > Resource Allocation > Local Rules, double-click the partition row you want to edit, or click Edit.
The Resource Rule dialog box appears.
Step 4 For each rule type, enter a new number or choose default or max from the drop-down list.
The default and max options set the number of rules to the default or maximum setting. The default and max numbers depend on the number of partitions you set, and each partition size. If you choose the max option, be sure to set other features lower to accommodate this value. You cannot leave the other feature values at default if you set one or more features to max; you need to manually decrease the value of one or more features to accomodate the increase in the feature you set to max.
Step 5 Click Apply.
These settings take effect immediately when you Apply; you do not need to reload the FWSM.
Configuring Resource Classes
By default, all security contexts have unlimited access to the resources of the FWSM, except where maximum limits per context are enforced. However, if you find that one or more contexts use too many resources, and they cause other contexts to be denied connections, for example, then you can configure resource management to limit the use of resources per context. The FWSM manages resources by assigning contexts to resource classes. Each context uses the resource limits set by the class.
Note The FWSM does not limit the bandwidth per context; however, the switch containing the FWSM can limit bandwidth per VLAN. See the switch documentation for more information.
This section contains the following topics:
•Classes and Class Members Overview
•Adding a Resource Class
Classes and Class Members Overview
The FWSM manages resources by assigning contexts to resource classes. Each context uses the resource limits set by the class. This section includes the following topics:
•Resource Limits Overview
•Default Class Overview
•Class Members Overview
Resource Limits Overview
When you create a class, the FWSM does not set aside a portion of the resources for each context assigned to the class; rather, the FWSM sets the maximum limit for a context. If you oversubscribe resources, or allow some resources to be unlimited, a few contexts can "use up" those resources, potentially affecting service to other contexts.
You can set the limit for all resources together as a percentage of the total available for the device. Also, you can set the limit for individual resources as a percentage or as an absolute value.
You can oversubscribe the FWSM by assigning more than 100 percent of the resources across all contexts. For example, you can set the Bronze class to limit connections to 20 percent per context, and then assign 10 contexts to the class for a total of 200 percent. If contexts concurrently use more than the system limit, then each context gets less than the 20 percent you intended. (See the following figure.)
The FWSM lets you assign unlimited access to one or more resources in a class, instead of a percentage or absolute number. When a resource is unlimited, contexts can use as much of the resource as the system has available. For example, Context A, B, and C are in the Silver Class, which limits each class member to 1 percent of the system inspections per second, for a total of 3 percent; but the three contexts are currently only using 2 percent combined. Gold Class has unlimited access to inspections. The contexts in the Gold Class can use more than the 97 percent of "unassigned" inspections; they can also use the 1 percent of inspections not currently in use by Context A, B, and C, even if that means that Context A, B, and C are unable to reach their 3 percent combined limit. (See the following figure.) Setting unlimited access is similar to oversubscribing the FWSM, except that you have less control over how much you oversubscribe the system.
Default Class Overview
All contexts belong to the default class if they are not assigned to another class; you do not have to actively assign a context to the default class.
If a context belongs to a class other than the default class, those class settings always override the default class settings. However, if the other class has any settings that are not defined, then the member context uses the default class for those limits. For example, if you create a class with a 2 percent limit for all concurrent connections, but no other limits, then all other limits are inherited from the default class. Conversely, if you create a class with a 2 percent limit for all resources, the class uses no settings from the default class.
By default, the default class provides unlimited access to resources for all contexts, except for the following limits, which are by default set to the maximum allowed per context:
•Telnet sessions—5 sessions.
•SSH sessions—5 sessions.
•IPSec sessions—5 sessions.
•MAC addresses—65,535 entries.
The following figure shows the relationship between the default class and other classes. Contexts A and C belong to classes with some limits set; other limits are inherited from the default class. Context B inherits no limits from default because all limits are set in its class, the Gold class. Context D was not assigned to a class, and is by default a member of the default class.
Class Members Overview
To use the settings of a class, assign the context to the class when you define the context. All contexts belong to the default class if they are not assigned to another class; you do not have to actively assign a context to default. You can only assign a context to one resource class. The exception to this rule is that limits that are undefined in the member class are inherited from the default class; so in effect, a context could be a member of default plus another class.
Adding a Resource Class
To add a resource class, perform the following steps:
Step 1 If you are not already in the System configuration mode, in the Device List pane, double-click System under the active device IP address.
Step 2 On the Context Management > Resource Class pane, click Add.
The Add Resource Class dialog box appears.
Step 3 In the Resource Class field, enter a class name up to 20 characters in length.
Step 4 In the Count Limited Resources area, set the concurrent limits for resources.
For resources that do not have a system limit, you cannot set the percentage; you can only set an absolute value. If you do not set a limit, the limit is inherited from the default class. If the default class does not set a limit, then the resource is unlimited, or the system limit if available.
You can set one or more of the following limits:
•Hosts—Sets the limit for concurrent hosts that can connect through the FWSM. Select the check box to enable this limit. If you set the limit to 0, it is unlimited.
•Telnet—Sets the limit for concurrent Telnet sessions. Select the check box to enable this limit. You can set the limit as a percentage by entering any integer greater than 1 and selecting Percent from the list. You can assign more than 100 percent if you want to oversubscribe the device. Or you can set the limit as an absolute value by entering an integer between 1 and 5 and selecting Absolute from the list. The system has a maximum of 100 sessions divided between all contexts.
•ASDM Sessions—Sets the limit for concurrent ASDM sessions. Select the check box to enable this limit. You can set the limit as a percentage by entering any integer greater than 1 and selecting Percent from the list. You can assign more than 100 percent if you want to oversubscribe the device. Or you can set the limit as an absolute value by entering an integer between 1 and 5 and selecting Absolute from the list. The system has a maximum of 80 sessions divided between all contexts. ASDM sessions use two HTTPS connections: one for monitoring that is always present, and one for making configuration changes that is present only when you make changes. For example, the system limit of 32 ASDM sessions represents a limit of 64 HTTPS sessions, divided between all contexts.
•Connections—Sets the limit for concurrent TCP or UDP connections between any two hosts, including connections between one host and multiple other hosts. Select the check box to enable this limit. You can set the limit as a percentage by entering any integer greater than 1 and selecting Percent from the list. You can assign more than 100 percent if you want to oversubscribe the device. Or you can set the limit as an absolute value by entering an integer between 0 (system limit) and the system limit for your model, and selecting Absolute from the list. See the Release Notes for Cisco ASDM for the connection limit for your model.
•Xlates—Sets the limit for address translations. Select the check box to enable this limit. If you set the limit to 0, it is unlimited.
•SSH—Sets the limit for SSH sessions. Select the check box to enable this limit. You can set the limit as a percentage by entering any integer greater than 1 and selecting Percent from the list. You can assign more than 100 percent if you want to oversubscribe the device. Or you can set the limit as an absolute value by entering an integer between 1 and 5 and selecting Absolute from the list. The system has a maximum of 100 sessions divided between all contexts.
•MAC Entries—(Transparent mode only) Sets the limit for MAC address entries in the MAC address table. Select the check box to enable this limit. You can set the limit as a percentage by entering any integer greater than 1 and selecting Percent from the list. You can assign more than 100 percent if you want to oversubscribe the device. Or you can set the limit as an absolute value by entering an integer between 0 (system limit) and 65535 and selecting Absolute from the list.
Step 5 In the Rate Limited Resources area, set the rate limit for resources.
If you do not set a limit, the limit is inherited from the default class. If the default class does not set a limit, then it is unlimited by default.
You can set one or more of the following limits:
•Conns/sec—Sets the limit for connections per second. Select the check box to enable this limit. If you set the limit to 0, it is unlimited.
•Syslogs/sec—Sets the limit for system log messages per second. Select the check box to enable this limit. If you set the limit to 0, it is unlimited.
•Inspects/sec—Sets the limit for application inspections per second. Select the check box to enable this limit. If you set the limit to 0, it is unlimited.
Step 6 Click OK.
Monitoring Context Resource Usage
To monitor resource usage of all contexts from the system execution space, perform the following steps:
Step 1 If you are not already in the System mode, in the Device List pane, double-click System under the active device IP address.
Step 2 Click the Monitoring button on the toolbar.
Step 3 Click Context Resource Usage.
Click each resource type to view the resource usage for all contexts:
•ASDM—Shows the usage of ASDM connections.
–Context—Shows the name of each context.
–Existing Connections (#)—Shows the number of existing connections.
–Existing Connections (%)—Shows the connections used by this context as a percentage of the total number of connections used by all contexts.
–Peak Connections (#)—Shows the peak number of connections since the statistics were last cleared, either using the clear resource usage command or because the device rebooted.
•Telnet—Shows the usage of Telnet connections.
–Context—Shows the name of each context.
–Existing Connections (#)—Shows the number of existing connections.
–Existing Connections (%)—Shows the connections used by this context as a percentage of the total number of connections used by all contexts.
–Peak Connections (#)—Shows the peak number of connections since the statistics were last cleared, either using the clear resource usage command or because the device rebooted.
•SSH—Shows the usage of SSH connections.
–Context—Shows the name of each context.
–Existing Connections (#)—Shows the number of existing connections.
–Existing Connections (%)—Shows the connections used by this context as a percentage of the total number of connections used by all contexts.
–Peak Connections (#)—Shows the peak number of connections since the statistics were last cleared, either using the clear resource usage command or because the device rebooted.
•Xlates—Shows the usage of netword address translations.
–Context—Shows the name of each context.
–Xlates (#)—Shows the number of current xlates.
–Xlates (%)—Shows the xlates used by this context as a percentage of the total number of xlates used by all contexts.
–Peak (#)—Shows the peak number of xlates since the statistics were last cleared, either using the clear resource usage command or because the device rebooted.
•NATs—Shows the number of NAT rules.
–Context—Shows the name of each context.
–NATs (#)—Shows the current number of NAT rules.
–NATs (%)—Shows the NAT rules used by this context as a percentage of the total number of NAT rules used by all contexts.
–Peak NATs (#)—Shows the peak number of NAT rules since the statistics were last cleared, either using the clear resource usage command or because the device rebooted.
•Syslogs—Shows the rate of system log messages.
–Context—Shows the name of each context.
–Syslog Rate (#/sec)—Shows the current rate of system log messages.
–Syslog Rate (%)—Shows the system log messages generated by this context as a percentage of the total number of system log messages generated by all contexts.
–Peak Syslog Rate (#/sec)—Shows the peak rate of system log messages since the statistics were last cleared, either using the clear resource usage command or because the device rebooted.
Step 4 Click Refresh to refresh the view.
Configuring Security Contexts
To add a security context, perform the following steps:
Step 1 If you are not already in the System configuration mode, in the Device List pane, double-click System under the active device IP address.
Step 2 On the Context Management > Security Contexts pane, click Add.
The Add Context dialog box appears.
Step 3 In the Security Context field, enter the context name as a string up to 32 characters long.
This name is case sensitive, so you can have two contexts named "customerA" and "CustomerA," for example. "System" or "Null" (in upper or lower case letters) are reserved names, and cannot be used.
Step 4 In the Interface Allocation area, click the Add button to assign an interface to the context.
Step 5 From the Interfaces > Physical Interface drop-down list, choose an interface.
You can assign the main interface, in which case you leave the subinterface ID blank, or you can assign a subinterface or a range of subinterfaces associated with this interface. In transparent firewall mode, only interfaces that have not been allocated to other contexts are shown. If the main interface was already assigned to another context, then you must choose a subinterface.
Step 6 (Optional) In the Interfaces > Subinterface Range (optional) drop-down list, choose a subinterface ID.
For a range of subinterface IDs, choose the ending ID in the second drop-down list, if available.
In transparent firewall mode, only subinterfaces that have not been allocated to other contexts are shown.
Step 7 (Optional) In the Aliased Names area, check Use Aliased Name in Context to set an aliased name for this interface to be used in the context configuration instead of the interface ID.
a. In the Name field, sets the aliased name.
An aliased name must start with a letter, end with a letter, and have as interior characters only letters, digits, or an underscore. This field lets you specify a name that ends with a letter or underscore; to add an optional digit after the name, set the digit in the Range field.
b. (Optional) In the Range field, set the numeric suffix for the aliased name.
If you have a range of subinterfaces, you can enter a range of digits to be appended to the name.
Step 8 (Optional) To enable context users to see physical interface properties even if you set an aliased name, check Show Hardware Properties in Context.
Step 9 Click OK to return to the Add Context dialog box.
Step 10 (Optional) To assign this context to a resource class, choose a class name from the Resource Assignment > Resource Class drop-down list.
You can add or edit a resource class directly from this area. See the "Configuring Resource Classes" section for more information.
Step 11 (Optional) To map a context to a specific memory partition, choose a partition number from the Resource Assignment > ACL Partition drop-down list.
See the "Setting the Number of Memory Partitions" section to configure the number of memory partitions.
When you assign a context to a partition, then the partition becomes exclusive. An exclusive partition only includes contexts that you specifically assign to it. Partitions that do not have contexts specifically assigned to them are non-exclusive and contexts are allocated to them in a round-robin fashion.
Note If you assign contexts to all partitions, then they are all exclusive. However, if you later add a context that is not assigned to a partition, then contexts are allocated to exclusive partitions in a round-robin fashion, and the first best-fit exclusive partition available is used for the allocation of the new context. However, if none of the exclusive partitions can accommodate the rules of the new context, then it is assigned to partition 0 by default, even though partition 0 also cannot accommodate the context rules. The context rules will not load completely, so you need to manually adjust the way contexts are assigned tomake room.
Step 12 To set the context configuration location, identify the URL by choosing a file system type from the Config URL drop-down list and entering a path in the field.
For example, the combined URL for FTP has the following format:
ftp://server.example.com/configs/admin.cfg
Step 13 (Optional) For external filesystems, set the username and password by clicking Login.
Step 14 (Optional) To set the failover group for active/active failover, choose the group name in the Failover Group drop-down list.
Step 15 (Optional) Add a description in the Description field.


React On Screen
Check if a react component is in the viewport and do some fancy things
View on GitHub
View the doc
Download .zip
Download .tar.gz
Scroll down to see the fanciness !


to Patient Portal
Patient/Clinic Video Call Queue
Staff Console
This page shows the Clinic Staff View of pending patient requests for a video appointment.
Click on a Patient to connect with them over BlueJeans
Patients access the site from the
Patient Appointment
page.
This program is provided as a Reference Design,
use at your own risk
.
Appointment Queue
Click on name to start the Telemed Appointment
1
Jenny Patient
9:59:07 AM
2
Second Inline
9:59:03 AM
Debugging Area
To Patient Page
Show Raw Data
Reset ACD
App Heartbeat:


|
Vc
1.2.0
SIMD Vector Classes for C++
|
|
Additional classes, macros, and functions that help to work more easily with the main vector types.
Classes | |
| class | CpuId |
| This class is available for x86 / AMD64 systems to read and interpret information about the CPU's capabilities. More... | |
| struct | ImplementationT< Features > |
| This class identifies the specific implementation Vc uses in the current translation unit in terms of a type. More... | |
| class | Allocator< T > |
| An allocator that uses global new and supports over-aligned types, as per [C++11 20.6.9]. More... | |
| struct | AlignedBase< Alignment > |
| Helper class to ensure a given alignment. More... | |
| class | InterleavedMemoryWrapper< S, V > |
| Wraps a pointer to memory with convenience functions to access it via vectors. More... | |
| class | Memory< V, Size1, Size2, InitPadding > |
| A helper class for fixed-size two-dimensional arrays. More... | |
| class | Memory< V, Size, 0u, InitPadding > |
| A helper class to simplify usage of correctly aligned and padded memory, allowing both vector and scalar access. More... | |
| class | Memory< V, 0u, 0u, true > |
| A helper class that is very similar to Memory<V, Size> but with dynamically allocated memory and thus dynamic size. More... | |
Macros | |
| #define | Vc_DECLARE_ALLOCATOR(Type) |
Convenience macro to set the default allocator for a given Type to Vc::Allocator. More... | |
Typedefs | |
| using | CurrentImplementation = ImplementationT< > |
| Identifies the Vc implementation used in the current translation unit. More... | |
| template<typename T , typename Allocator = std::allocator<T>> | |
| using | vector = Common::AdaptSubscriptOperator< std::vector< T, Allocator >> |
An adapted std::vector container with an additional subscript operator which implements gather and scatter operations. More... | |
| using | VectorAlignedBase = AlignedBase< Detail::max(alignof(Vector< float >), alignof(Vector< double >), alignof(Vector< ullong >), alignof(Vector< llong >), alignof(Vector< ulong >), alignof(Vector< long >), alignof(Vector< uint >), alignof(Vector< int >), alignof(Vector< ushort >), alignof(Vector< short >), alignof(Vector< uchar >), alignof(Vector< schar >))> |
| Helper type to ensure suitable alignment for any Vc::Vector<T> type (using the default VectorAbi). More... | |
| template<typename V > | |
| using | VectorAlignedBaseT = AlignedBase< alignof(V)> |
Variant of the above type ensuring suitable alignment only for the specified vector type V . More... | |
| using | MemoryAlignedBase = AlignedBase< Detail::max(Vector< float >::MemoryAlignment, Vector< double >::MemoryAlignment, Vector< ullong >::MemoryAlignment, Vector< llong >::MemoryAlignment, Vector< ulong >::MemoryAlignment, Vector< long >::MemoryAlignment, Vector< uint >::MemoryAlignment, Vector< int >::MemoryAlignment, Vector< ushort >::MemoryAlignment, Vector< short >::MemoryAlignment, Vector< uchar >::MemoryAlignment, Vector< schar >::MemoryAlignment)> |
| Helper class to ensure suitable alignment for arrays of scalar objects for any Vc::Vector<T> type (using the default VectorAbi). More... | |
| template<typename V > | |
| using | MemoryAlignedBaseT = AlignedBase< V::MemoryAlignment > |
Variant of the above type ensuring suitable alignment only for the specified vector type V . More... | |
| using | llong = long long |
| long long shorthand | |
| using | ullong = unsigned long long |
| unsigned long long shorthand | |
| using | ulong = unsigned long |
| unsigned long shorthand | |
| using | uint = unsigned int |
| unsigned int shorthand | |
| using | ushort = unsigned short |
| unsigned short shorthand | |
| using | uchar = unsigned char |
| unsigned char shorthand | |
| using | schar = signed char |
| signed char shorthand | |
Enumerations | |
| enum | MallocAlignment { AlignOnVector, AlignOnCacheline, AlignOnPage } |
| Enum that specifies the alignment and padding restrictions to use for memory allocation with Vc::malloc. More... | |
| enum | Implementation : std::uint_least32_t { ScalarImpl, SSE2Impl, SSE3Impl, SSSE3Impl, SSE41Impl, SSE42Impl, AVXImpl, AVX2Impl, MICImpl } |
| Enum to identify a certain SIMD instruction set. More... | |
| enum | ExtraInstructions : std::uint_least32_t { Float16cInstructions = 0x01000, Fma4Instructions = 0x02000, XopInstructions = 0x04000, PopcntInstructions = 0x08000, Sse4aInstructions = 0x10000, FmaInstructions = 0x20000, VexInstructions = 0x40000, Bmi2Instructions = 0x80000 } |
| The list of available instructions is not easily described by a linear list of instruction sets. More... | |
Functions | |
| const char * | versionString () |
| constexpr unsigned int | versionNumber () |
| template<typename V , typename Parent , typename Dimension , typename RM > | |
| std::ostream & | operator<< (std::ostream &s, const Vc::MemoryBase< V, Parent, Dimension, RM > &m) |
| Prints the contents of a Memory object into a stream object. More... | |
| template<typename Mask , typename T > | |
| enable_if< is_simd_mask< Mask >::value &&is_simd_vector< T >::value, T > | iif (const Mask &condition, const T &trueValue, const T &falseValue) |
| Function to mimic the ternary operator '?:' (inline-if). More... | |
| template<typename T > | |
| constexpr T | iif (bool condition, const T &trueValue, const T &falseValue) |
| Overload of the above for boolean conditions. More... | |
| template<typename V , typename = enable_if<Traits::is_simd_vector<V>::value>> | |
| std::pair< V, V > | interleave (const V &a, const V &b) |
Interleaves the entries from a and b into two vectors of the same type. More... | |
| template<typename Container , typename T > | |
| constexpr auto | makeContainer (std::initializer_list< T > list) -> decltype(make_container_helper< Container, T >::help(list)) |
| Construct a container of Vc vectors from a std::initializer_list of scalar entries. More... | |
| template<typename T , Vc::MallocAlignment A> | |
| T * | malloc (size_t n) |
| Allocates memory on the Heap with alignment and padding suitable for vectorized access. More... | |
| template<typename T > | |
| void | free (T *p) |
| Frees memory that was allocated with Vc::malloc. More... | |
| void | prefetchForOneRead (const void *addr) |
Prefetch the cacheline containing addr for a single read access. More... | |
| void | prefetchForModify (const void *addr) |
Prefetch the cacheline containing addr for modification. More... | |
| void | prefetchClose (const void *addr) |
Prefetch the cacheline containing addr to L1 cache. More... | |
| void | prefetchMid (const void *addr) |
Prefetch the cacheline containing addr to L2 cache. More... | |
| void | prefetchFar (const void *addr) |
Prefetch the cacheline containing addr to L3 cache. More... | |
| template<typename V , typename T , typename Abi > | |
| enable_if< (V::size()==Vector< T, Abi >::size()&&sizeof(typename V::VectorEntryType)==sizeof(typename Vector< T, Abi >::VectorEntryType)&&sizeof(V)==sizeof(Vector< T, Abi >)&&alignof(V)<=alignof(Vector< T, Abi >)), V > | reinterpret_components_cast (const Vector< T, Abi > &x) |
Constructs a new Vector object of type V from the Vector x , reinterpreting the bits of x for the new type V . More... | |
| template<typename M > | |
| constexpr WhereImpl::WhereMask< M > | where (const M &mask) |
| Conditional assignment. More... | |
Variables | |
| constexpr AlignedTag | Aligned |
Use this object for a flags parameter to request aligned loads and stores. More... | |
| constexpr UnalignedTag | Unaligned |
Use this object for a flags parameter to request unaligned loads and stores. More... | |
| constexpr StreamingTag | Streaming |
Use this object for a flags parameter to request streaming loads and stores. More... | |
| constexpr LoadStoreFlags::LoadStoreFlags< PrefetchFlag<> > | PrefetchDefault |
Use this object for a flags parameter to request default software prefetches to be emitted. | |
| constexpr VectorSpecialInitializerZero | Zero = {} |
The special object Vc::Zero can be used to construct Vector and Mask objects initialized to zero/false . | |
| constexpr VectorSpecialInitializerOne | One = {} |
The special object Vc::One can be used to construct Vector and Mask objects initialized to one/true . | |
| constexpr VectorSpecialInitializerIndexesFromZero | IndexesFromZero = {} |
The special object Vc::IndexesFromZero can be used to construct Vector objects initialized to values 0, 1, 2, 3, 4, ... | |
Compiler Identification Macros | |
| #define | Vc_ICC __INTEL_COMPILER_BUILD_DATE |
| This macro is defined to a number identifying the ICC version if the current translation unit is compiled with the Intel compiler. More... | |
| #define | Vc_CLANG (__clang_major__ * 0x10000 + __clang_minor__ * 0x100 + __clang_patchlevel__) |
| This macro is defined to a number identifying the Clang version if the current translation unit is compiled with the Clang compiler. More... | |
| #define | Vc_GCC (__GNUC__ * 0x10000 + __GNUC_MINOR__ * 0x100 + __GNUC_PATCHLEVEL__) |
| This macro is defined to a number identifying the GCC version if the current translation unit is compiled with the GCC compiler. More... | |
| #define | Vc_MSVC _MSC_FULL_VER |
| This macro is defined to a number identifying the Microsoft Visual C++ version if the current translation unit is compiled with the Visual C++ (MSVC) compiler. More... | |
| #define | Vc_PASSING_VECTOR_BY_VALUE_IS_BROKEN 1 |
| This macro is defined if the compiler disallows passing over-aligned types by value. More... | |
Micro-Architecture Feature Tests | |
| unsigned int | extraInstructionsSupported () |
| Determines the extra instructions supported by the current CPU. More... | |
| bool | isImplementationSupported (Vc::Implementation impl) |
| Tests whether the given implementation is supported by the system the code is executing on. More... | |
| Vc::Implementation | bestImplementationSupported () |
| Determines the best supported implementation for the current system. More... | |
| bool | currentImplementationSupported () |
| Tests that the CPU and Operating System support the vector unit which was compiled for. More... | |
Version Macros | |
| #define | Vc_VERSION_STRING "1.2.0" |
| Contains the version string of the Vc headers. More... | |
| #define | Vc_VERSION_NUMBER 0x010200 |
| Contains the encoded version number of the Vc headers. More... | |
| #define | Vc_VERSION_CHECK(major, minor, patch) ((major << 16) | (minor << 8) | (patch << 1)) |
| Helper macro to compare against an encoded version number. More... | |
SIMD Support Feature Macros | |
| #define | Vc_IMPL_XOP |
| This macro is defined if the current translation unit is compiled with XOP instruction support. | |
| #define | Vc_IMPL_FMA4 |
| This macro is defined if the current translation unit is compiled with FMA4 instruction support. | |
| #define | Vc_IMPL_F16C |
| This macro is defined if the current translation unit is compiled with F16C instruction support. | |
| #define | Vc_IMPL_POPCNT |
| This macro is defined if the current translation unit is compiled with POPCNT instruction support. | |
| #define | Vc_IMPL_SSE4a |
| This macro is defined if the current translation unit is compiled with SSE4a instruction support. | |
| #define | Vc_IMPL_Scalar |
| This macro is defined if the current translation unit is compiled without any SIMD support. | |
| #define | Vc_IMPL_SSE |
| This macro is defined if the current translation unit is compiled with any version of SSE (but not AVX). | |
| #define | Vc_IMPL_SSE2 |
| This macro is defined if the current translation unit is compiled with SSE2 instruction support (excluding SSE3 and up). | |
| #define | Vc_IMPL_SSE3 |
| This macro is defined if the current translation unit is compiled with SSE3 instruction support (excluding SSSE3 and up). | |
| #define | Vc_IMPL_SSSE3 |
| This macro is defined if the current translation unit is compiled with SSSE3 instruction support (excluding SSE4.1 and up). | |
| #define | Vc_IMPL_SSE4_1 |
| This macro is defined if the current translation unit is compiled with SSE4.1 instruction support (excluding SSE4.2 and up). | |
| #define | Vc_IMPL_SSE4_2 |
| This macro is defined if the current translation unit is compiled with SSE4.2 instruction support (excluding AVX and up). | |
| #define | Vc_IMPL_AVX |
| This macro is defined if the current translation unit is compiled with AVX instruction support (excluding AVX2 and up). | |
| #define | Vc_IMPL_AVX2 |
| This macro is defined if the current translation unit is compiled with AVX2 instruction support. | |
| #define | Vc_IMPL_MIC |
| This macro is defined if the current translation unit is compiled for the Knights Corner Xeon Phi instruction set. | |
SIMD Vector Size Macros | |
| #define | Vc_DOUBLE_V_SIZE |
| An integer (for use with the preprocessor) that gives the number of entries in a double_v. | |
| #define | Vc_FLOAT_V_SIZE |
| An integer (for use with the preprocessor) that gives the number of entries in a float_v. | |
| #define | Vc_INT_V_SIZE |
| An integer (for use with the preprocessor) that gives the number of entries in a int_v. | |
| #define | Vc_UINT_V_SIZE |
| An integer (for use with the preprocessor) that gives the number of entries in a uint_v. | |
| #define | Vc_SHORT_V_SIZE |
| An integer (for use with the preprocessor) that gives the number of entries in a short_v. | |
| #define | Vc_USHORT_V_SIZE |
| An integer (for use with the preprocessor) that gives the number of entries in a ushort_v. | |
Boolean Reductions | |
| template<typename Mask > | |
| constexpr bool | all_of (const Mask &m) |
Returns whether all entries in the mask m are true . | |
| constexpr bool | all_of (bool b) |
Returns b . | |
| template<typename Mask > | |
| constexpr bool | any_of (const Mask &m) |
Returns whether at least one entry in the mask m is true . | |
| constexpr bool | any_of (bool b) |
Returns b . | |
| template<typename Mask > | |
| constexpr bool | none_of (const Mask &m) |
Returns whether all entries in the mask m are false . | |
| constexpr bool | none_of (bool b) |
Returns !b . | |
| template<typename Mask > | |
| constexpr bool | some_of (const Mask &m) |
Returns whether at least one entry in m is true and at least one entry in m is false . | |
| constexpr bool | some_of (bool) |
Returns false . | |
| #define Vc_ICC __INTEL_COMPILER_BUILD_DATE |
| #define Vc_CLANG (__clang_major__ * 0x10000 + __clang_minor__ * 0x100 + __clang_patchlevel__) |
| #define Vc_GCC (__GNUC__ * 0x10000 + __GNUC_MINOR__ * 0x100 + __GNUC_PATCHLEVEL__) |
| #define Vc_MSVC _MSC_FULL_VER |
| #define Vc_PASSING_VECTOR_BY_VALUE_IS_BROKEN 1 |
This macro is defined if the compiler disallows passing over-aligned types by value.
If this is the case you must use parameter passing by const-ref exclusively.
| #define Vc_VERSION_STRING "1.2.0" |
Contains the version string of the Vc headers.
Same as Vc::versionString().
Definition at line 41 of file version.h.
Referenced by Vc::versionString().
| #define Vc_VERSION_NUMBER 0x010200 |
Contains the encoded version number of the Vc headers.
Same as Vc::versionNumber().
Definition at line 47 of file version.h.
Referenced by Vc::versionNumber().
| #define Vc_VERSION_CHECK | ( | major, | |
| minor, | |||
| patch | |||
| ) | ((major << 16) | (minor << 8) | (patch << 1)) |
| #define Vc_DECLARE_ALLOCATOR | ( | Type | ) |
Convenience macro to set the default allocator for a given Type
to Vc::Allocator.
| Type | Your type that you want to use with STL containers. |
| using CurrentImplementation = ImplementationT< > |
Identifies the Vc implementation used in the current translation unit.
| using vector = Common::AdaptSubscriptOperator<std::vector<T, Allocator>> |
An adapted std::vector
container with an additional subscript operator which implements gather and scatter operations.
Example:
| using VectorAlignedBase = AlignedBase< Detail::max(alignof(Vector<float>), alignof(Vector<double>), alignof(Vector<ullong>), alignof(Vector<llong>), alignof(Vector<ulong>), alignof(Vector<long>), alignof(Vector<uint>), alignof(Vector<int>), alignof(Vector<ushort>), alignof(Vector<short>), alignof(Vector<uchar>), alignof(Vector<schar>))> |
Helper type to ensure suitable alignment for any Vc::Vector<T> type (using the default VectorAbi).
This class reimplements the new
and delete
operators to align objects allocated on the heap suitably for objects of Vc::Vector<T> type. This is necessary since the standard new
operator does not adhere to the alignment requirements of the type.
Definition at line 91 of file alignedbase.h.
| using VectorAlignedBaseT = AlignedBase<alignof(V)> |
Variant of the above type ensuring suitable alignment only for the specified vector type V
.
Definition at line 101 of file alignedbase.h.
| using MemoryAlignedBase = AlignedBase< Detail::max(Vector<float>::MemoryAlignment, Vector<double>::MemoryAlignment, Vector<ullong>::MemoryAlignment, Vector<llong>::MemoryAlignment, Vector<ulong>::MemoryAlignment, Vector<long>::MemoryAlignment, Vector<uint>::MemoryAlignment, Vector<int>::MemoryAlignment, Vector<ushort>::MemoryAlignment, Vector<short>::MemoryAlignment, Vector<uchar>::MemoryAlignment, Vector<schar>::MemoryAlignment)> |
Helper class to ensure suitable alignment for arrays of scalar objects for any Vc::Vector<T> type (using the default VectorAbi).
This class reimplements the new
and delete
operators to align objects allocated on the heap suitably for arrays of type Vc::Vector<T>::EntryType
. Subsequent load and store operations are safe to use the aligned variant.
Definition at line 123 of file alignedbase.h.
| using MemoryAlignedBaseT = AlignedBase<V::MemoryAlignment> |
Variant of the above type ensuring suitable alignment only for the specified vector type V
.
Definition at line 133 of file alignedbase.h.
| enum MallocAlignment |
Enum that specifies the alignment and padding restrictions to use for memory allocation with Vc::malloc.
| enum Implementation : std::uint_least32_t |
Enum to identify a certain SIMD instruction set.
You can use CurrentImplementation for the currently active implementation.
| enum ExtraInstructions : std::uint_least32_t |
The list of available instructions is not easily described by a linear list of instruction sets.
On x86 the following instruction sets always include their predecessors: SSE2, SSE3, SSSE3, SSE4.1, SSE4.2, AVX, AVX2
But there are additional instructions that are not necessarily required by this list. These are covered in this enum.
| unsigned int Vc::extraInstructionsSupported | ( | ) |
Determines the extra instructions supported by the current CPU.
| bool Vc::isImplementationSupported | ( | Vc::Implementation | impl | ) |
Tests whether the given implementation is supported by the system the code is executing on.
true
if the OS and hardware support execution of instructions defined by impl
. false
otherwise| impl | The SIMD target to test for. |
| Vc::Implementation Vc::bestImplementationSupported | ( | ) |
Determines the best supported implementation for the current system.
|
inline |
Tests that the CPU and Operating System support the vector unit which was compiled for.
This function should be called before any other Vc functionality is used. It checks whether the program will work. If this function returns false
then the program should exit with a useful error message before the OS has to kill it because of an invalid instruction exception.
If the program continues and makes use of any vector features not supported by hard- or software then the program will crash.
Example:
true
if the OS and hardware support execution of the currently selected SIMD instructions. false
otherwise
|
inline |
| constexpr unsigned int Vc::versionNumber | ( | ) |
|
inline |
Prints the contents of a Memory object into a stream object.
will output (with SSE):
{[0, 1, 2, 3] [4, 5, 6, 7] [8, 9, 0, 0]}
| s | Any standard C++ ostream object. For example std::cout or a std::stringstream object. |
| m | Any Vc::Memory object. |
|
inlinedelete |
Function to mimic the ternary operator '?:' (inline-if).
| condition | Determines which values are returned. This is analog to the first argument to the ternary operator. |
| trueValue | The values to return where condition is true . |
| falseValue | The values to return where condition is false . |
trueValue
and falseValue
, according to condition
.So instead of the scalar variant
you'd write
Assuming a
has the values [0, 3, 5, 1], b
is [1, 1, 1, 1], and c
is [1, 2, 3, 4], then x will be [2, 2, 3, 5].
| constexpr T Vc::iif | ( | bool | condition, |
| const T & | trueValue, | ||
| const T & | falseValue | ||
| ) |
Overload of the above for boolean conditions.
This typically results in direct use of the ternary operator. This function makes it easier to switch from a Vc type to a builtin type.
| condition | Determines which value is returned. This is analog to the first argument to the ternary operator. |
| trueValue | The value to return if condition is true . |
| falseValue | The value to return if condition is false . |
trueValue
or falseValue
, depending on condition
. | std::pair<V, V> Vc::interleave | ( | const V & | a, |
| const V & | b | ||
| ) |
Interleaves the entries from a
and b
into two vectors of the same type.
The order in the returned vector contains the elements a[0], b[0], a[1], b[1], a[2], b[2], a[3], b[3], ...
.
Example:
| a | input vector whose data will appear at even indexes in the output |
| b | input vector whose data will appear at odd indexes in the output |
a
and b
interleaved Definition at line 56 of file interleave.h.
| constexpr auto Vc::makeContainer | ( | std::initializer_list< T > | list | ) | -> decltype(make_container_helper<Container, T>::help(list)) |
Construct a container of Vc vectors from a std::initializer_list of scalar entries.
| Container | The container type to construct. |
| T | The scalar type to use for the initializer_list. |
| list | An initializer list of arbitrary size. The type of the entries is important! If you pass a list of integers you will get a container filled with Vc::int_v objects. If, instead, you want to have a container of Vc::float_v objects, be sure the include a period (.) and the 'f' postfix in the literals. Alternatively, you can pass the type as second template argument to makeContainer. |
list
does not match the number of values in the returned container object, the remaining values in the returned object will be zero-initialized.Example:
Definition at line 139 of file makeContainer.h.
|
inline |
Allocates memory on the Heap with alignment and padding suitable for vectorized access.
Memory that was allocated with this function must be released with Vc::free! Other methods might work but are not portable.
| n | Specifies the number of objects the allocated memory must be able to store. |
| T | The type of the allocated memory. Note, that the constructor is not called. |
| A | Determines the alignment of the memory. See Vc::MallocAlignment. |
A
. Thus if you request memory for 21 int objects, aligned via Vc::AlignOnCacheline, you can safely read a full cacheline until the end of the array, without generating an out-of-bounds access. For a cacheline size of 64 Bytes and an int size of 4 Bytes you would thus get an array of 128 Bytes to work with.
|
inline |
Frees memory that was allocated with Vc::malloc.
| p | The pointer to the memory to be freed. |
| T | The type of the allocated memory. |
Definition at line 103 of file memory.h.
Referenced by Memory< V, 0u, 0u, true >::~Memory().
|
inline |
|
inline |
Prefetch the cacheline containing addr
for modification.
This prefetch evicts data from the cache. So use it only for data you really will use. When the target system supports it the cacheline will be marked as modified while prefetching, saving work later on.
| addr | The cacheline containing addr will be prefetched. |
|
inline |
|
inline |
|
inline |
|
inline |
Constructs a new Vector object of type V
from the Vector x
, reinterpreting the bits of x
for the new type V
.
This function is only applicable if:
sizeof
of the input and output types is equalVectorEntryTypes
of input and output have equal sizeof
| V | The requested type to change x into. |
| x | The Vector to reinterpret as an object of type V . |
V
.Abi
, though. | constexpr WhereImpl::WhereMask<M> Vc::where | ( | const M & | mask | ) |
Conditional assignment.
Since compares between SIMD vectors do not return a single boolean, but rather a vector of booleans (mask), one often cannot use if / else statements. Instead, one needs to state that only a subset of entries of a given SIMD vector should be modified. The where
function can be prepended to any assignment operation to execute a masked assignment.
| mask | The mask that selects the entries in the target vector that will be modified. |
where(mask) | x = y
or where(mask)(x) = y
)Example:
The block following the if statement in f1
will be executed if x < 2
evaluates to true
. If T
is a scalar type you normally get what you expect. But if T
is a SIMD vector type, the comparison will use the implicit conversion from a mask to bool, meaning all_of(x < 2)
.
Most of the time the required operation is a masked assignment as stated in f2
.
Definition at line 230 of file where.h.
Referenced by Vc::iif().
| constexpr AlignedTag Aligned |
Use this object for a flags
parameter to request aligned loads and stores.
It specifies that a load/store can expect a memory address that is aligned on the correct boundary. (i.e. MemoryAlignment
)
Definition at line 184 of file loadstoreflags.h.
| constexpr UnalignedTag Unaligned |
Use this object for a flags
parameter to request unaligned loads and stores.
It specifies that a load/store can not expect a memory address that is aligned on the correct boundary. (i.e. alignment is less than MemoryAlignment
)
Definition at line 197 of file loadstoreflags.h.
Referenced by MemoryBase< V, Memory< V, Size, 0u, InitPadding >, 1, void >::vector().
| constexpr StreamingTag Streaming |
Use this object for a flags
parameter to request streaming loads and stores.
It specifies that the cache should be bypassed for the given load/store. Whether this will actually be done depends on the target system's capabilities.
Streaming stores can be interesting when the code calculates values that, after being written to memory, will not be used for a long time or used by a different thread.
Definition at line 212 of file loadstoreflags.h.


The School of Athens, lauded as "Raphael's masterpiece and the perfect embodiment of the classical spirit of the Renaissance," was commissioned by Pope Julius II in 1509. It famously depicts many of the most brilliant and influential philosophers, mathematicians, and scientists of classical antiquity. The positions of the figures in the picture are allusions to their thought and works. See a close-up of Plato and Aristotle for an example of this.
| Name | Raffaelo "Raphael" Sanzio de Urbino |
|---|---|
| Date of Birth | March 28, 1483 |
| Date of Death | April 6, 1520 |
For an introduction to the figures in The School of Athens, you can head over to Khan Academy. This is a somewhat cursory treatment of the topic, but it is helpful for beginners, as it pairs brief descriptions of the thought of the figures depicted with close-ups of their image in the painting. The site does a good job of integrating pictures with the text.


Chief Ashas Varka Durai:
Dear friend of Varka, have you brought the Head of Tayre, the commander of the Ketras?
"Here's Tayre's head."


--- layout: apidoc title: Tile5 API Documentation ---
The Geo.Position submodule is used to perform operations on Geo.Position objects rather than have those operations bundled with the object.
Calculate the distance between two T5.Geo.Position objects, pos1 and pos2. The distance returned is measured in kilometers.
Create a copy of the specified T5.Geo.Position object.
Returns true if the T5.Geo.Position object is empty, false if not.
Compares to T5.Geo.Position objects and returns true if they have the same latitude and longitude values
This function is used to take x and y mercator pixels values, and using the value passed in the radsPerPixel value convert that to a Geo.Position object.
To be completed
Checks to see whether the specified T5.Geo.Position is contained within the array of position objects passed in the testArray.
Returns true if the specified Geo.Position object is within the T5.Geo.BoundingBox specified by the bounds argument.
Return a new T5.Geo.Position which is the original pos
offset by
the specified latOffset
and lonOffset
(which are specified in
km distance)
This function is used to take a latitude and longitude String pair (either space or comma delimited) and return a new T5.Geo.Position value. The function is also tolerant of being passed an existing T5.Geo.Position object as the object argument, and in these cases returns a copy of the position.
Just like parse, but with lots of em'
Basically, the reverse of the fromMercatorPixels function - pass it a Geo.Position object and get a Vector object back with x and y mercator pixel values back.
Return a string representation of the Geo.Position object
The vectorize function is used to take an array of positions specified in the
positions
argument and convert these into GeoXY composites. By default
the vectorize function will process these asyncronously and will return a
COG Worker that will be taking care of chunking up and processing the request
in an efficient way. It is, however, possible to specify that the conversion should
happen synchronously and in this case the array of vectors is returned rather
than a worker instance.
// default options are used (async + 500 conversions per cycle)
T5.Geo.Position.vectorize(positions);
var vectors = T5.Geo.Position.vectorize(positions, {
async: false
});


 Being based in one of the hippest cities in North America definitely has its perks. Surrounded by an unrelenting stream of inspiration and world class startup, Startup Comfort team has a natural gift for creating the geekiest looks at prices that won’t make you sweat.
“The only way to do great work is to love what you do surround yourself with what you love.”Modified quote from- Aristotle Apple Inc. co-founder, chairman and CEO
Spread the culture of your startup by having amazing custom tailored apparel or home decor gear that has your logo or your startup color theme. The outcome is that you will see the positive impact that benefit your brand image in conferences, street wear, in social media, in fashion etc.
To make sure that companies make the best, first impression, sure your logo and personalization stands out through expert embroidery. You can have your name, title and/or organization's name or logo embroidered on our work wear. Monograms are available in script of block lettering. Our prices include one placement embroidery. Contact us for a free quote.


Self Testing Quiz
Anxiety Test
Anxiety Test Card
Read more
Depression Test
Depression Test Card
Read more
Youth Test
Youth Test Card
Read more
Bi-Polar Test
Bi-Polar Test Card
Read more


Mystery, Alaska A film review by Marty Mapes Copyright 1999 Marty Mapes
*1/2 (out of 4) The previews for the movie are pretty good.
Unfortunately, the full movie adds nothing but 115 minutes.
The residents of Mystery love hockey. Mystery and hockey go together like Texas and high school football. The townsfolk love hockey so much that they even acquit a player who's guilty of shooting another man (yes, that's one of the movie's jokes.) Every Saturday, the best players pair off for a game, and the whole town comes to watch.
The town's prodigal son Charlie (Hank Azaria) wrote an article on the weekly game for Sports Illustrated. Mystery's national fame has the town abuzz. A week later, Charlie actually shows up in person, and he brings with him an offer from the NHL. The New York Rangers will come to Mystery to play the locals.
The Mysterians see this as both good and bad. On the one hand, they'd love to have the fame and the money of such an exhibition. On the other hand, they don't want to turn up as the butt of Leno and Letterman jokes.
The movie follows a handful of lives that are affected by the proposition.
Biebe (Russell Crowe) has just been retired from the team and is asked to coach the boys, including his new replacement. He's already resentful, and to top it off Charlie has been making eyes at his wife. Crowe is not given a lot of room to act in this film, so he's just kind of stuck with constantly brooding.
Charlie, meanwhile, is resentful of having born in a town where hockey is the only measure of a man's worth. His "gift" of the feature story, and of the New York Rangers, was his way of compensating for not being a better skater. He hoped it would earn him some respect and merit, but the townspeople find reasons to continue disliking him.
Burt Reynolds could have been interesting as Walter, the judge whose courtroom was befouled by a moronic jury of hockey fans. Walter actually has some experience with collegiate hockey, but he actively tries to put it behind him. He wants his son to take the game more seriously, but he wants his community to just get over it. Reynolds could have been good, but sloppy writing and/or editing keep Walter in the corner, and so Reynolds never really gets to pull his performance all together.
One character actually was interesting. Biebe's wife (Mary McCormack), like the judge, understood that there was more to life than hockey. But unlike him she has come to accept the skewed view of the community. She chose the town and her husband with her eyes wide open. Her unique insight is verbalized once, and it lasts only a scene before it is gone, but her performance carries the hint of some deeper wisdom.
MYSTERTY, ALASKA follows a handful of other characters, but none are well developed or worth mentioning.
The biggest problem with this movie is that there is no real heart to the story, no underlying thing that the movie is really ABOUT. Instead, Roach and screenwriters David E. Kelley and Sean O'Byrne try to cram the entire human condition into this sports comedy. They try to make you laugh and cry, to feel outrage and pride. They present the framing and cadence for jokes, but there's nothing truly funny. They show appropriately staged scenes of sadness, but they give you nothing to be really sad about. As columnist Molly Ivins would say, it's all hat, no cattle.
The perfect opportunity arises for Roach to say what this movie is really about. There is a funeral scene, played with appropriate gravity and somber music. It is a chance for the characters to reflect on their lives and decide what's truly important. Russell Crowe steps forward to speak, about to spell out the movie's metaphor for us. He says that what really matters in life is "community...." Then adds "and hockey." I guess these Mysterians really are as shallow as they appear.
Only mildly bad, Mystery, Alaska probably deserves 2 stars. I even laughed out loud, genuine laughs in places. But I docked it an extra half star when Mike Myers, a friend of Roach, turned up in a role that didn't suit him. Myers is a comic character actor. He puts on masks, becomes an outrageous caricature, and is funny. He's great as Austin Powers, Dr. Evil, or any of his Scottish characters.
Nobody else in MYSTERTY, ALASKA is a comic caricature. All the other people have the feel of dramatic characters in semi-serious roles. For Roach to bring in Myers for a few cheap laughs shows incredible contempt toward the rest of his cast, toward his audience, and indeed toward the film itself. It's an acknowledgment by the director that the film is not worth taking seriously.
I recommend you take his word for it.
Check out more current movie reviews at http://www.moviehabit.com
-- Marty Mapes<EMAIL_ADDRESS>Movie Habit http://www.moviehabit.com
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


[gecode-users] exact behaviour of different IntValBranch
Kish Shen
kisshen at cisco.com
Fri Jul 30 22:52:22 CEST 2010
Christian Schulte wrote:
> Let's take INT_VAR_SIZE_MIN and INT_VAL_MIN as an example and suppose that
> you have selected the variable x with
> the smallest domain that is first in the array you branch on and that the
> min of x is n.  After
> exploring either of the choices and doing propagation the brancher is run
> again: it will find the first variable with smallest domain. That might be
> or might not be the same variable as x.
Ah, this is the part I did not know (that you might not be using the
same variable). This is indeed different from what ECLiPSe (and most
likely other backtracking constraint solver) does.
> This gives better choices wrt the heuristic than sticking to the original x.
> Suppose you do it the Eclipse way and have selected a variable x with values
> {n_0, ..., n_k}. Then you try in turn that x=n_0, x=n_1, ... That might be
> bad. Look at the second alternative x=n_1. What Gecode does is that it
> propagates first that x != n_0 and then it chooses a variable again: this
> choice is likely to be better as the additional information from propagating
> x != n_0 is available.
However, propagation of x != n_0 can also occur with ECLiPSe -- it does
not affect your selection of variable (i.e. you will still label x),
but it may reduce the domain of x and other variables.  Both
of these value choices strategy are available in the search/6 predicate
of the ic library.
I was first made aware of this difference in discussion with Helmut
Simonis (who also introduced search/6 to ECLiPSe), and he said that it
is not always clear which strategy is better, and depends on the problem
being solved, which is why both are provided in search/6.
> Let's take INT_VALUES_MIN as an example with x as selected variable with
> values {n_0, ..., n_k}. Then a choice (x = n_0) v ... v (x = n_k) is
> created. So, that's in fact the Eclipse style.
>
I assume you don't do any propagations here; as already discussed, it is
not the only possibility.
I think it is also worth noting that INT_VALUES_MIN strategy is more
expensive in a recomputation based system than a backtracking system,
because in a recomputation system you need to remember all the choices,
rather than just the value selected.
> I hope that helps.
>
> Do you think it's worth explaining that in MPG?
>
Yes, I think it is worth explaining. I had very great problems
understanding the search chapter in the MPG (actually the MG then :-)),
until I had my discussion with Helmut. It was not obvious to me
that you had binary choices at each choicepoint until that discussion.
This was when I first started implementing the Gecode interface more
than a year ago. However, the fact that you perform variable selection
again was not known to me until your message today, so I think it is
worth discussing both points.
Cheers,
Kish
--
This e-mail may contain confidential and privileged material for the
sole use of the intended recipient. Any review, use, distribution or
disclosure by others is strictly prohibited. If you are not the intended
recipient (or authorized to receive for the recipient), please contact
the sender by reply e-mail and delete all copies of this message.
Cisco Systems Limited (Company Number: 02558939), is registered in
England and Wales with its registered office at 1 Callaghan Square,
Cardiff, South Glamorgan CF10 5BT.
More information about the users
mailing list


{% extends 'base.html' %}
{% load staticfiles %}
{% block title %}
Game Dev
{% endblock %}
{% block header %}Video Game Development{% endblock %}
{% block body %}
| Squares 2 Clone |
|
-
Squares 2 Dev Info
A page on my site for info on the technology & how it was made.
-
Game Overview:
This is a clone of Squares 2. Black and red blocks move across the
screen at varying speeds. The player's cursor is also a black square. The object of the game is for the player to collect other black squares
with their cursor. They gain points and their cursor size increases. If the player hits a red square the game ends. The speed of all the
blocks increases as the game progresses. It's a very simple but addicting game.
-
How to Play:
Download the Source Code and follow the README.md for installation & running instructions.
| Geo Wars |
|
-
Geo Wars Dev Info
A page on my site for info on the technology, how it was made, my role, etc.
-
Game Overview:
Geo Wars is a 2D single player side-scroller platform shooter. The player has control over
their character (left, right, and jump) and has access to four different weapons: pistol,
shotgun, and two automatic weapons. Currently there is only one level consisting of
platforms, spikes, red grunts, and a ninja warrior at the end. The grunts start moving
towards the player when within a certain distance. The boss can jump, has a sword, and
chases after the player when within a certain distance. If the player hits the spikes or
any of the enemies they die and start back at the beginning of the level. The player gets
three lives and in order to beat the level they have to kill the boss. The object is to
clear the level as many times as possible with only the three lives. Enemies get more
health and are faster each level.
-
How to Play:
The game is hosted on Kongregate
[Play GeoWars]
and requires
WebPlayer
to be installed. WebPlayer games have to be played using Firefox. If you have a Kongregate account then you can get your high
score saved on the site. You may have to update Adobe Flash Player and/or Unity Player to play the game.
| Labyrinth Crawl |
|
-
Labyrinth Crawl Dev Info
- A page on my site for info on the technology, how it was made, etc.
-
Game Overview:
Labyrinth Crawl is a terminal based strategy game, and the object is to make it
through 10 levels to escape. Each level is a randomly generated maze with
many dead ends. Also, each level is littered with enemies that are randomly placed throughout
the maze. They don't move but can block paths. The player can attack the enemies at the
risk of losing health to continue down the path. Each level of the labyrinth has more enemies
than the previous one. Another twist is the player only sees parts of the map that they have
traversed so far. This forces the player to choose which enemies to battle to open up certain
paths. The player starts off with full health on each each level of the maze. This game forces
the player to use some strategy combined with a bit of luck to make it out alive.
-
How to Play:
Feel free to download Labyrinth Crawl and play the game.
| Crazy Canal Tower Defense |
|
-
Game Overview:
This game is a tower defense game that's still in progress. The player has to create defense towers along a canal to protect their
base from the enemies who are trying to destroy it. The enemies drive boats down the canal and attempt to reach the base to do damage to it.
Currently, there is 1 map, 3 different basic tower types, and an assortment of enemy types.
-
How to Play:
The plan is to host this on Kongregate in the near future.
| Epic Crawl |
|
-
Note: The downloadable is an earlier version of the game without all of the new features. An updated
version should be available soon.
Epic Crawl Dev Info
- A page on my site for info on the technology, how it is being made, my role, etc.
-
Game Overview:
This game is a 2D single player dungeon crawler RPG that's still in progress. Currently, the player
can move through the levels in the game killing enemies along the way. The enemies go after the
player when within a certain distance. There is only one attack but there will be melee, ranged, and
magic. Leveling up through experience gained and a skill tree will be implemented. The storyline and
main story objectives are still in development.
-
How to Play:
Feel free to download Epic Crawl and play the game. You
need to have Java
installed in order to play.
| Pirates |
|
-
Note: I am no longer contributing to this project, and the game is still in production.
Pirates Dev Info
- A page on my site for info on the technology, how it was being made, my role, etc.
-
Game Overview:
Pirates is a 3D combat based game that is currently in the Alpha Stage.
It's an on-line, multi-player PvP game with melee and ranged combat.
There are many modes including: death-match,
capture the flag, king of the hill, etc. These modes can be
free-for-all or team based. Games will support up to 64 players - 32 per team.
The game maps consist of islands, ruins, etc., and
some modes are played on the open sea where teams battle each other from their ships.
-
Progress:
Currently, the game has basic maps, an animated moveable player, a basic combat system,
supports multiple clients on the servers, and other basic features. More
weapons, players, ships, and map objects are being created. More advanced movement and combat
features are also being added.
Check out the Main Page and
IndieDB Site for the game.
There are also blogs, images, etc. all over the internet - like this
Preview Article.
If you want to search for other info/media on the game use Miriscus and Pirates.
The plan for the near future is to go for
Steam Greenlight
for initial crowd funding.
{% endblock %}


Every man who has lotted here over the centuries, has looked up to the light and imagined climbing to freedom. So easy, so simple! And like shipwrecked men turning to seawater
Every man who has lotted here over the centuries, has looked up to the light and imagined climbing to freedom. So easy, so simple! And like shipwrecked men turning to seawater


Strongly requires
Weakly requires
loose understanding of
basic understanding of
technical understanding of
research level understanding of
Teaches
Expands on
loose understanding of
basic understanding of
technical understanding of
research level understanding of


I’m a good communicator and quick learner, who can work with a team as well as alone by adjusting myself according to the situation. I have the ability to convert my knowledge and experience to innovative ideas and solutions, using my skills.
Institute: Kyoto College of Graduate Studies for Informatics
Duration: April 2020 at Present
Institute: University of Sri Jayawardenapura- Sri Lanka
Duration: 2014-2018
Aggregate: 1st Class with 3.70 GPA of 4.00
Institute: Loyola College - Sri Lanka
Duration: 2010-2012
Institute: Vikum International Company Pvt Ltd.
Duration: 2018 May- 2020 March
Institute: Development Lotteries Board
Duration: October 2017- 2018 January
This my final year project of my bachelor degree.This research create Coconut Beetles Repellent hardware component and Android Mobile Application for control the Coconut Beetles Repellent hardware component.
Watch VideoThis system used temperature sensor, humidity sensor and soil moisture sensor as the sensors and ZigBee used to communicate between transceiver unit and receiver unit
Download Research paper| Address; | Kyoto shi Sakyo ku Thanakamonzen 8-1 Hyakumanben Haitsu 105 | |
| Mobile: | 080-7750-8000 | |
| Email: |<EMAIL_ADDRESS>|


@* * Call the `main` template with two arguments. The first * argument is a `String` with the title of the page, the second * argument is an `Html` object containing the body of the page. *@ @(user: models.users.User) @main("Contact Us",user) {
1 x $250
1 x $250
Please Find Directions to our store by Locating us with Google Maps
ITT Music Blessington Rd, Tallaght, Dublin 24, D24 FKT9
Please Contact us on any of the following ways
ITT Music Blessington Rd, Tallaght, Dublin 24, D24 FKT9
0987769554
Email<EMAIL_ADDRESS>Full of details on Exciting Deals and Products We have at ITT Music


Hangman 2 Furious
Please Warm Your Hands UP, and Start Typing A Lettter!