New license management
Version 6 of the GUI introduced a significant change in the way the IMPETUS Afea Server works. The change was motivated by requests from users that wanted to isolate the license server so that simulations could run on clusters without having a license and USB dongle connected to each node.
In earlier versions the server would run as a standard application, requiring a user to be logged in on the simulation machine at all times. Later we added the option to run the server as a service instead. From version 6, the server was split into two isolated services: the IMPETUS Afea Server service and the IMPETUS Afea Compute Node service. At the same time we removed the option of running the server as an application.
The server service is now responsible for the license management and job scheduling. It is also the entity that the client GUI applications communicate with. The compute node service is simply responsible for starting new simulations based on commands from the server service. The compute node service communicates with the server service over TCP/IP port 8860, just as the GUI clients do.
By doing this separation it is now possible for the server to communicate with multiple compute nodes. Several machines can be set up as compute nodes and used for running simulations, whereas the single server has the USB dongle attached and license installed. The default is to run both the compute node and the server on the same machine, just as before. But if that is not a good solution for your simulation environment, it is easy to set up the server and the compute node(s) separately.
Setting up the server
We tried to make it as simple as possible to set up the server, both for a single license and for a larger cluster solution. We wanted to make as few changes to the workflow as possible, but you will notice that some details have changed.
When configuring the server, you will be asked to install the services.
As you may know, services run in the context of an account. In Windows, services can run as a local or domain user account or as the LocalSystem account. The LocalSystem account does not have access to the network and should only be used if you know that the simulation files will be located locally on the server. Otherwise you should select This account when installing the service and specify the credentials of a local or domain user account.
Note that the user name may require some special formatting (like the computer or domain name and a backslash before the user name). If you have problems providing a valid username and password, a trick is to first select Local system account in the dialog above and then later open the Windows Services window, locate the IMPETUS services, right-click, select Properties from the pop-up menu and locate the Log On tab. There you will find the Browse button, which will make it easier for you to get the correct user name formatting.
In the Install service dialog you also see a checkbox where you can select if you want to run simulations on this computer. The compute node service is installed if this checkbox is checked. You should almost always keep this checked.
Once the services are installed and started, click the Connect button in the Configure IMPETUS Afea server dialog. The GUI should now be connected with the server and you should see a green light icon next to localhost in the top left corner. You can click on localhost to enter the Configure server dialog again.
Setting up additional compute nodes
This section is relevant only if you want to run simulations on multiple computers. If you have a single license, you may jump to the next section.
To set up a computer as a stand-alone compute node, you start by specifying that you want to connect to another computer that is running the server.
Note that the Configure IMPETUS server dialog is a wizard dialog, so if you see the Local server page, click the Back button to get to the page shown above.
On the next page you specify the name of the server, just as you would on any remote GUI. But to make it a compute node, make sure to check Run simulations on this computer. This will install the compute node service on this computer (though not the server service). The account settings are similar as described above.
Click Connect and you should see the green light icon next to the server name in the top right corner.
NB! If you have problems connecting to the server, make sure the firewall allows communication over port 8860!
Traditionally we issued license files that specifies the number of GPUs you can use for simulations and the number of concurrent jobs you are allowed to have. The standard license allows you to run up to 10 concurrent jobs on up to 2 GPUs.
As the server is now responsible for managing multiple compute nodes, and the compute nodes may have varying number of GPUs, we had to come up with a different view of the license file. To keep the resources associated with a single license unchanged, we introduced the concept of license units. One license unit allows you to run up to 10 concurrent jobs on up to 2 GPUs. A license file can contain multiple license units, and you are free to allocate license units among the compute nodes, based on their hardware configuration. Note that a license unit is atomic, if you have two computers with one GPU each, you cannot assign half a license unit to each.
To manage the license units, click the License button that is shaped like a key in the top right corner of the GUI. You will see an overview of your license and a list of the license units available.
Note that each license unit has a Compute node field. This is where you assign a licenses to compute nodes. By clicking on the pencil icon you can select which compute node to assign to that license unit. If you have a single license and a single compute node this should be set automatically, but in some cases you have to set this explicitly.
In the example above you see the server has 5 license units and 3 connected compute nodes. One compute node is assigned 2 license units so that it can use 4 GPUs. The other two compute nodes have one license unit each. The last license unit is still unassigned.
When you start a simulation you will notice a new group box where you can specify the compute node. If a compute node is set up and connected but not assigned a license, you will not be able to select it.
The GPU options update dynamically after you select the compute node, so the GPUs available for selection will depend on which compute node you selected and the license units assigned. If your node has 4 GPUs but only 2 are available for selection, you may have to assign more license units to that node.
In the Solve window you will now see a common job queue for all compute nodes. If you prefer to see each compute node separately, you can set up a filter for each node.
At the moment you have to explicitly specify which compute node to run on. A natural extension is to allow automatic compute node selection based on some heuristic like least recently used, least number of running jobs, etc., similar to the way we are assign jobs to GPUs. This is not supported now, but will likely come in a future version.