FAQ icon

Choosing PC to run Cobra

What would be a recommended PC?

We recommend the following PC giving the best price/performance ratio
CPU: Intel quad-core i7 / 2.4+ GHz
RAM: 6 GB
GPU: nVIDIA Geforce GTX480
OS: Windows7 64 bit

What would be a recommended graphics card (GPU)?

We recommend: nVIDIA Geforce GTX480.
One could use any graphics card with CUDA technology support and at least 768 MB on-board RAM. So other nVIDIA Geforce GTX 400-series cards can be also used.

The top-of-the-line graphics card is not available or does not fit my budget. Give me an idea about the reconstruction performance if I use a less powerful card?

Let consider a particular example

nVIDIA Geforce GTX480
CUDA Cores: 480
Processor clock : 1401 MHz
RAM: 1536MB

nVIDIA Geforce GTX460
CUDA Cores: 336
Processor clock : 1350 MHz
RAM: 1GB

We would expect the reconstruction speed difference within the range of 10-15%. Please note that for big cubes (the reconstruction has to be made in a few passes because the available buffer can not hold the whole volume) the most critical factor is RAM size. Reconstructing (for example) in 6 passes instead of 4 passes also can cause 10-15% of extra time.


Which type of PC (hyper-threaded, multi-core, etc.) should I use to get the best performance?

We have to distinguish three types of technology here:
1) Hyper-threading, which is a trick allowing to use a single calculation pipeline more efficiently when it has to be shared by very many processes (for example 100);
2) Multi-core, which means multiple physical calculation pipelines inside one microchip;
3) Multi-chip, when you physically have many chips on a motherboard.

First of all, hyper-threading is bad for Cobra; it must be turned off through BIOS setup
Regarding multi-core, multi-chip. When one reconstructs on CPU then COBRA can utilize up to 8 cores (dual-chip quad-core configuration); when one has up to 4 cores (1,2 or 4) then a speed up is almost linear.
In the case of GPU reconstruction a speed up / slow down factors mostly depends on reconstruction corrections complexity. For example CFA, auto water, post processing are being performed on CPU.

Is Cobra working (compatible) with Windows XP 64-bit and Windows 7 64-bit? Does Exxim have any plans to offer a special 64-bit version of Cobra?

Cobra works under control of any Windows operating system starting XP. Cobra GUI , Cobra visualization, and Cobra SDK dll interfaces are available in two versions: as 32-bit and 64-bit platforms. The reconstruction engine is represented by two Windows services implemented as 32-bit applications. Since the most critical code units are being developed using machine-oriented languages, DirectX and CUDA technologies we do not consider migrating to pure 64-bit platform compilers (to build the reconstruction engine) profitable. The recommended platform to run Cobra is Windows 7 64-bit.

How to install COBRA on a PC cluster?

First, one should do a complete COBRA installation on all cluster PCs (nodes),
including Microsoft Runtime, DirectX redistributable and HASP driver (if applicable).
Performing a control reconstruction of some data (e.g. the mouse data from our website)
is the recommended way to make sure that COBRA is completely installed.

The Distributed Version of COBRA_Exxim is based on a Master/Slave model. This is described as follows.

Once installed on any network connected computer, COBRA can perform either as Master node or as Slave node.

Starting CobraGUI.exe or COBRA_Exxim.exe program (or user's program in the case of SDK) on one computer automatically selects that computer as the Master node.

All other computers with COBRA (distributed version) installed, which are connected to the network, are automatically available as Slaves (see Restrictions below).

Slaves are completely controlled by the Master node, so no user interaction (other than the initial installation) is required on the Slave computers.

Restrictions of the model:

Masters cannot share Slaves.
Up to 4 Slaves are supported.

Once participating computers are prepared and the Master PC has been chosen, one should configure a
cluster in CobraGUI.exe. Please go to pull-down menu Tools/Cluster Setup. The list "Machines" there
is supposed to be filled with name of computers participating in cluster (as they show in your network) .
Please note that during cluster reconstruction your USB key (HASP, SDX) is required to be present
only on a Master machine.
NB for SDK users: Please see Section 4.1.6 (API CobraDispatcher_Communicate) of the UM how to control a cluster
from a user application

Cluster solutions: how to achieve the best reconstruction performance?

The most top available configuration is one master and 4 slaves. Any PC may have 8 CPU cores (which means COBRA can use up to 8 cores per PC). This number of cores  (8 per PC) does not depend on number of slaves. In the same time the user can have just one PC providing a good reconstruction speed. With COBRA installed, a single non-expensive PC (~$2000 with nVidia 480GTX) makes a reconstruction of  512x512x512 cube from 512 input views 512x512 each in 20 sec or so. These 20 sec is the time between "all input data on the disk, nothing in memory" and "the whole volume is saved on the disk"   
If we have another typical configuration 1024x1024x768 --> 1024x1024x1024 then the expected time would be less than 4 min. It will be totally non-trivial to set up an efficient cluster. The data flow through network typically is a very narrow bottleneck. An efficient cluster setup can be accomplished but it requires special arrangements for a decent networking hardware and most likely special solutions on input image acquisition side. From our experience achieving the most efficient solution may require "cloning" source data which makes input views available locally in every cluster node

Cluster solutions: are all nodes required to be the same PCs (shall a cluster be homogeneous)?

A cluster can be heterogenious and there is an option when user can tune the load (per node).
One can have the file cobra_cluster.ini in the root of C:

It is a text file, the content example is below
[participation]
host.0=6
host.1=4

It means that the cluster contains 2 nodes and they participate in proportions 6 / 4 (60% of the volume will be taken care of by node #1 and 40% of the volume will be taken care of by node #2)
One could use arbitrary numbers and Cobra will do normalization.

 

lb