Dynamo in Amazon EC2

From Dynamo
Jump to navigation Jump to search

We are preparing a release of Dynamo for the EC2 cloud computing service. This will allow users without access to a graphic accelerator to use Dynamo on a powerful GPU in the cloud, paying only for the actually used computing time, and avoid the purchase, installation and maintenance of special hardware.

The Dynamo AMI itself can be used free of charge and needs no additional license. It delivers a tested installation of all needed software (Dynamo, CUDA, MCR libraries), ready for immediate use upon connection to your account.

Feel free to contact us if you want to be a beta tester.

Creating an account

We will post here a walkthrough for the creation of an user account in the Amazon EC2.

selecting the EC2 services

The EC2 dashboard is accessed through Services > EC2"

The EC2 dashboard

Configuring an instance

Launch an instance


Your instance will be built on the top of an AMI of type CUDA7.5 provided by NIVIDA. You can find it in the Amazon Marketplace. The use of the AMI itself is free of charge: you will only have to pay to Amazon the time you keep the instance running.

Select the CUDA AMI from the marketplace

After the selection, some additional information from Nvidia will pop up:

Launch an instance

Instance type

Make certain that you initiate an instance type that includes a GPU machine. Amzon describes [here] its different instance types... please make certain that you check the prizing scheme before launching the instance.

Select an instance type that includes GPU accelerators

For some of the instance types you might need to contact Amazon: the default profile user usually cannot ask for a p2.large or an g2.large instance.

Error message when GPU instances are not available for your profile in your zone
You'll probably need to apply for permission for launching them using your user support menu. This might take one or two days.

Also, take into account that not all areas provide all types of instances. You might need to change your geographic area in order to access GPU instances.

You will get an (alarming looking) warning. This is simply telling you that your GPU instance is not free of charge and that you will incur costs if you proceed with the launch of the instance. So, be aware of this and discard/ignore the message.

Warning about non elegibility for free tier user can be ignored.

Storage

Make certain that your instance has at least 16Gb of storage capacity. The default of 8G is mainly consumed by the OS, and in the remaining size you will not be able to download and untar the Dynamo package.

Selecting adequate storage


Connection keys

When you press on Launch, you'll be asked to create a key file, or to use a previous one (from a previous Amazon EC2 session). This is merely a file .pem that you need to use in order to connect to your instance, or to transfer data to/from it.

Generating or selecting a key file

Launching an instance

After launching the instance, a window will pop up with information for connecting to the virtual server through an ssh command. You will get the public DNS of the instance, and some instructions.

Information after launching of the instance

However, the information is not totally correct, as the user name you need to use is ec2-user. This information can be consulted [in the documentation provided by Amazon]

A successful launch will open this site:

Successful launch

which will not update. You probably want to go to the dashboard of resources and then click on Running Instances

Running instances in dashboard

to control the current status of the instance you just launched

Management of instances

Connecting to the instance

Once your instance is running, you can connect to it through an ssh terminal. Typically, you need to include the key file generated in the moment of launching the instance. Remember that you 'need to ensurer that your key is not publicly viewable through chmod

chmod 400 myKey.pem

Then you can connect to your instance of the NVIDIA AMI

ssh -i "myKey.pem"  ec2-user@<instance public DNS> 

Here, the instance location should look something like ec2-52-214-203-126.eu-west-1.compute.amazonaws.com

After you connect to it, you can check that the nvidia driver is in place by typing

nvidia-smi 

You can also find the CUDA libraries under /usr/local/cuda

Running Dynamo projects

Copying Dynamo

First, you need to transfer the Dynamo package. Assuming you have the tar file in your local machine:

scp -i "keyFile.pem" <your Dynamo tar> <ec2-user@<your instance's public DNS>:/home/ubuntu/

Setting the terminal

Then, you can ssh to your EC2 virtual terminal. There, you still to install Dynamo:

mkdir dynamo
tar -xf <Dynamo tar file> -C /home/ubuntu/dynamo 

You need to make an extra couple of adjustments on your terminal. The AMI provided by envidia needs to be able to talk to the Matlab libraries provided by your Dynamo tar.

sudo yum install -y libXt 

Now you are ready to go. This terminal will be able to run Dynamo projects in the usual way. We suggest you to test the installation by activating Dynamo

source ~/dynamo/activateLinux.sh

and the opening its command line:

dynamo

and then creating a synthetic project

Dynamo >  dtutorial mytest -p pgpu 

Then we adapt it for running in the GPU:

Dynamo >  dvput pgpu dst standalone_gpu 

We can also select the GPU identifiers:

Dynamo >  dvput pgpu -gpus [0,1] 

After that, we need to unfold the project to make the changes permanent

Dynamo >  dvunfold 

execute from the command line of the terminal (outside of the Dynamo prompt Dynamo > )

./pgpu.exe

Graphic output

Note that further settings are needed: :

sudo yum install -y libGLU
sudo yum install -y libXrand

This will merely prepare your system to talk to the graphical libraries delivered by Dynamo. Still you need to prepare a X forwarding protocol between your local machine and your Amazon terminal

Killing the instance

A running instance is consuming money. If you stop it, you will still pay for the storage of the data in the terminal. In order to totally kill the instance, including stored data, you need to terminate it.

Terminate an instance