Cudafy on multiple GPUs

Apr 18, 2012 at 3:13 PM

Hi there,

I have three Tesla cards in my workstation. How can I select a specific card to calculate on?

Thanks for all replies!

Coordinator
Apr 19, 2012 at 11:11 PM

Hello,

You can specify the deviceId when you call an overload of CudafyHost.GetDevice(...). 

Nick

Apr 20, 2012 at 5:21 AM

That was the answer I was looking for.

Thank you!

Jun 16, 2012 at 4:45 PM

I tried to implement the multi gpu version but it is not working for me :( when I try to allocate the memory on the gpu inside one thread I receive an error:"CUDA.NET exception: ErrorInvalidContext."

I did use the Cudafy.Host.UnitTests Program to look up how it is programmed.

Here is a part of my code. I hope you can help me :)

 

CudafyTranslator.GenerateDebug = false;
CudafyModes.CodeGen = eGPUCodeGenerator.CudaC;
CudafyModes.Target = eGPUType.Cuda;
devices = CudafyHost.GetDeviceCount(eGPUType.Cuda);

module = CudafyTranslator.Cudafy();
gpu = new GPGPU[devices];
thread = new Thread[devices];

for (int i = 0; i < devices; i++)
{
    gpu[i] = CudafyHost.GetDevice(CudafyModes.Target, i);
    gpu[i].LoadModule(module);
}
 
public void StartThreads()
{
    for (int i = 0; i < devices; i++)
    {
        thread[i] = new Thread(StartCalculation);
        thread[i].Start(i);
    }
}

private void StartCalculation(object input)
{
    int i = (int)input;

    dev_a = gpu[i].Allocate<double>(host_a.Length);
    dev_b = gpu[i].Allocate<double>(host_b.Length);
    dev_c = gpu[i].Allocate<double>(host_c.Length);

    gpu[i].CopyToDevice(host_a, dev_a);
    gpu[i].CopyToDevice(host_b, dev_b);

    gpu[i].Launch(blocks, threads).AddVector_Kernel(dev_a, dev_b, dev_c);

    gpu[i].CopyFromDevice(dev_c, host_c);
    gpu[i].FreeAll();
}

Coordinator
Jun 20, 2012 at 2:35 PM

See this new documentation page.

Jun 25, 2012 at 7:30 PM
Edited Jun 26, 2012 at 11:11 PM

Visual Studio says, there is no definition for SetCurrentContext ???? I have got the latest Cudafy Release.

I tried to compile the repository, but there are 54 errors showing up...what can I do now?

I

Coordinator
Jun 27, 2012 at 5:38 AM

I need to see the list of errors in order to help!

Jun 27, 2012 at 7:55 AM

Hi,

here ist the list of errors. i am sorry that they are in german, I will try to translate them. maybe it is easier, if you just send me the newly compiled dll?

thanks for your help.

 

Unsafe Code will only be displayed if compiled with /unsafe

Fehler    52    Unsicherer Code wird nur angezeigt, wenn mit /unsafe kompiliert wird.    F:\Downloads\Neuer Ordner\Cudafy\Cudafy.UnitTests\RelectorAddInFunctionsTests.cs    250    35    Cudafy.UnitTests
Fehler    53    Unsicherer Code wird nur angezeigt, wenn mit /unsafe kompiliert wird.    F:\Downloads\Neuer Ordner\Cudafy\Cudafy.UnitTests\RelectorAddInFunctionsTests.cs    261    35    Cudafy.UnitTests

 

The Metadatafile could not be found Cudafy.Math.UnitTests

Fehler    54    Die Metadatendatei "F:\Downloads\Neuer Ordner\Cudafy\Cudafy.UnitTests\bin\Release\Cudafy.UnitTests.exe" konnte nicht gefunden werden.    Cudafy.Math.UnitTests
Fehler    55    Die Metadatendatei "F:\Downloads\Neuer Ordner\Cudafy\Cudafy.UnitTests\bin\Release\Cudafy.UnitTests.exe" konnte nicht gefunden werden.    Cudafy.cudafycl.UnitTests
Fehler    56    Die Metadatendatei "F:\Downloads\Neuer Ordner\Cudafy\Cudafy.UnitTests\bin\Release\Cudafy.UnitTests.exe" konnte nicht gefunden werden.    Cudafy.Host.UnitTests

 

Type or Namespacename "TestFixtureAttribute" could not be found (Using Directive Missing?)

Fehler    4    Der Typ- oder Namespacename "TestFixtureAttribute" konnte nicht gefunden werden. (Fehlt eine Using-Direktive oder ein Assemblyverweis?)    F:\Downloads\Neuer Ordner\Cudafy\Cudafy.UnitTests\RelectorAddInFunctionsTests.cs    43    6    Cudafy.UnitTests
Fehler    10    Der Typ- oder Namespacename "TestFixtureAttribute" konnte nicht gefunden werden. (Fehlt eine Using-Direktive oder ein Assemblyverweis?)    F:\Downloads\Neuer Ordner\Cudafy\Cudafy.UnitTests\ReflectorAddInTypeTest.cs    57    6    Cudafy.UnitTests
Fehler    5    Der Typ- oder Namespacename "TestFixture" konnte nicht gefunden werden. (Fehlt eine Using-Direktive oder ein Assemblyverweis?)    F:\Downloads\Neuer Ordner\Cudafy\Cudafy.UnitTests\RelectorAddInFunctionsTests.cs    43    6    Cudafy.UnitTests
Fehler    11    Der Typ- oder Namespacename "TestFixture" konnte nicht gefunden werden. (Fehlt eine Using-Direktive oder ein Assemblyverweis?)    F:\Downloads\Neuer Ordner\Cudafy\Cudafy.UnitTests\ReflectorAddInTypeTest.cs    57    6    Cudafy.UnitTests
Fehler    12    Der Typ- oder Namespacename "TestAttribute" konnte nicht gefunden werden. (Fehlt eine Using-Direktive oder ein Assemblyverweis?)    F:\Downloads\Neuer Ordner\Cudafy\Cudafy.UnitTests\RelectorAddInFunctionsTests.cs    61    10    Cudafy.UnitTests
Fehler    14    Der Typ- oder Namespacename "TestAttribute" konnte nicht gefunden werden. (Fehlt eine Using-Direktive oder ein Assemblyverweis?)    F:\Downloads\Neuer Ordner\Cudafy\Cudafy.UnitTests\RelectorAddInFunctionsTests.cs    67    10    Cudafy.UnitTests
Fehler    16    Der Typ- oder Namespacename "TestAttribute" konnte nicht gefunden werden. (Fehlt eine Using-Direktive oder ein Assemblyverweis?)    F:\Downloads\Neuer Ordner\Cudafy\Cudafy.UnitTests\RelectorAddInFunctionsTests.cs    73    10    Cudafy.UnitTests
Fehler    18    Der Typ- oder Namespacename "TestAttribute" konnte nicht gefunden werden. (Fehlt eine Using-Direktive oder ein Assemblyverweis?)    F:\Downloads\Neuer Ordner\Cudafy\Cudafy.UnitTests\RelectorAddInFunctionsTests.cs    79    10    Cudafy.UnitTests
Fehler    20    Der Typ- oder Namespacename "TestAttribute" konnte nicht gefunden werden. (Fehlt eine Using-Direktive oder ein Assemblyverweis?)    F:\Downloads\Neuer Ordner\Cudafy\Cudafy.UnitTests\RelectorAddInFunctionsTests.cs    85    10    Cudafy.UnitTests
Fehler    22    Der Typ- oder Namespacename "TestAttribute" konnte nicht gefunden werden. (Fehlt eine Using-Direktive oder ein Assemblyverweis?)    F:\Downloads\Neuer Ordner\Cudafy\Cudafy.UnitTests\RelectorAddInFunctionsTests.cs    91    10    Cudafy.UnitTests
Fehler    24    Der Typ- oder Namespacename "TestAttribute" konnte nicht gefunden werden. (Fehlt eine Using-Direktive oder ein Assemblyverweis?)    F:\Downloads\Neuer Ordner\Cudafy\Cudafy.UnitTests\RelectorAddInFunctionsTests.cs    97    10    Cudafy.UnitTests
Fehler    26    Der Typ- oder Namespacename "TestAttribute" konnte nicht gefunden werden. (Fehlt eine Using-Direktive oder ein Assemblyverweis?)    F:\Downloads\Neuer Ordner\Cudafy\Cudafy.UnitTests\RelectorAddInFunctionsTests.cs    103    10    Cudafy.UnitTests
Fehler    30    Der Typ- oder Namespacename "TestAttribute" konnte nicht gefunden werden. (Fehlt eine Using-Direktive oder ein Assemblyverweis?)    F:\Downloads\Neuer Ordner\Cudafy\Cudafy.UnitTests\RelectorAddInFunctionsTests.cs    109    10    Cudafy.UnitTests
Fehler    34    Der Typ- oder Namespacename "TestAttribute" konnte nicht gefunden werden. (Fehlt eine Using-Direktive oder ein Assemblyverweis?)    F:\Downloads\Neuer Ordner\Cudafy\Cudafy.UnitTests\RelectorAddInFunctionsTests.cs    116    10    Cudafy.UnitTests
Fehler    36    Der Typ- oder Namespacename "TestAttribute" konnte nicht gefunden werden. (Fehlt eine Using-Direktive oder ein Assemblyverweis?)    F:\Downloads\Neuer Ordner\Cudafy\Cudafy.UnitTests\ReflectorAddInTypeTest.cs    117    10    Cudafy.UnitTests
Fehler    38    Der Typ- oder Namespacename "TestAttribute" konnte nicht gefunden werden. (Fehlt eine Using-Direktive oder ein Assemblyverweis?)    F:\Downloads\Neuer Ordner\Cudafy\Cudafy.UnitTests\ReflectorAddInTypeTest.cs    123    10    Cudafy.UnitTests
Fehler    40    Der Typ- oder Namespacename "TestAttribute" konnte nicht gefunden werden. (Fehlt eine Using-Direktive oder ein Assemblyverweis?)    F:\Downloads\Neuer Ordner\Cudafy\Cudafy.UnitTests\RelectorAddInFunctionsTests.cs    123    10    Cudafy.UnitTests
Fehler    42    Der Typ- oder Namespacename "TestAttribute" konnte nicht gefunden werden. (Fehlt eine Using-Direktive oder ein Assemblyverweis?)    F:\Downloads\Neuer Ordner\Cudafy\Cudafy.UnitTests\ReflectorAddInTypeTest.cs    129    10    Cudafy.UnitTests
Fehler    44    Der Typ- oder Namespacename "TestAttribute" konnte nicht gefunden werden. (Fehlt eine Using-Direktive oder ein Assemblyverweis?)    F:\Downloads\Neuer Ordner\Cudafy\Cudafy.UnitTests\RelectorAddInFunctionsTests.cs    129    10    Cudafy.UnitTests
Fehler    46    Der Typ- oder Namespacename "TestAttribute" konnte nicht gefunden werden. (Fehlt eine Using-Direktive oder ein Assemblyverweis?)    F:\Downloads\Neuer Ordner\Cudafy\Cudafy.UnitTests\RelectorAddInFunctionsTests.cs    135    10    Cudafy.UnitTests
Fehler    48    Der Typ- oder Namespacename "TestAttribute" konnte nicht gefunden werden. (Fehlt eine Using-Direktive oder ein Assemblyverweis?)    F:\Downloads\Neuer Ordner\Cudafy\Cudafy.UnitTests\ReflectorAddInTypeTest.cs    142    10    Cudafy.UnitTests
Fehler    50    Der Typ- oder Namespacename "TestAttribute" konnte nicht gefunden werden. (Fehlt eine Using-Direktive oder ein Assemblyverweis?)    F:\Downloads\Neuer Ordner\Cudafy\Cudafy.UnitTests\ReflectorAddInTypeTest.cs    149    10    Cudafy.UnitTests
Fehler    13    Der Typ- oder Namespacename "Test" konnte nicht gefunden werden. (Fehlt eine Using-Direktive oder ein Assemblyverweis?)    F:\Downloads\Neuer Ordner\Cudafy\Cudafy.UnitTests\RelectorAddInFunctionsTests.cs    61    10    Cudafy.UnitTests
Fehler    15    Der Typ- oder Namespacename "Test" konnte nicht gefunden werden. (Fehlt eine Using-Direktive oder ein Assemblyverweis?)    F:\Downloads\Neuer Ordner\Cudafy\Cudafy.UnitTests\RelectorAddInFunctionsTests.cs    67    10    Cudafy.UnitTests
Fehler    17    Der Typ- oder Namespacename "Test" konnte nicht gefunden werden. (Fehlt eine Using-Direktive oder ein Assemblyverweis?)    F:\Downloads\Neuer Ordner\Cudafy\Cudafy.UnitTests\RelectorAddInFunctionsTests.cs    73    10    Cudafy.UnitTests
Fehler    19    Der Typ- oder Namespacename "Test" konnte nicht gefunden werden. (Fehlt eine Using-Direktive oder ein Assemblyverweis?)    F:\Downloads\Neuer Ordner\Cudafy\Cudafy.UnitTests\RelectorAddInFunctionsTests.cs    79    10    Cudafy.UnitTests
Fehler    21    Der Typ- oder Namespacename "Test" konnte nicht gefunden werden. (Fehlt eine Using-Direktive oder ein Assemblyverweis?)    F:\Downloads\Neuer Ordner\Cudafy\Cudafy.UnitTests\RelectorAddInFunctionsTests.cs    85    10    Cudafy.UnitTests
Fehler    23    Der Typ- oder Namespacename "Test" konnte nicht gefunden werden. (Fehlt eine Using-Direktive oder ein Assemblyverweis?)    F:\Downloads\Neuer Ordner\Cudafy\Cudafy.UnitTests\RelectorAddInFunctionsTests.cs    91    10    Cudafy.UnitTests
Fehler    25    Der Typ- oder Namespacename "Test" konnte nicht gefunden werden. (Fehlt eine Using-Direktive oder ein Assemblyverweis?)    F:\Downloads\Neuer Ordner\Cudafy\Cudafy.UnitTests\RelectorAddInFunctionsTests.cs    97    10    Cudafy.UnitTests
Fehler    27    Der Typ- oder Namespacename "Test" konnte nicht gefunden werden. (Fehlt eine Using-Direktive oder ein Assemblyverweis?)    F:\Downloads\Neuer Ordner\Cudafy\Cudafy.UnitTests\RelectorAddInFunctionsTests.cs    103    10    Cudafy.UnitTests
Fehler    31    Der Typ- oder Namespacename "Test" konnte nicht gefunden werden. (Fehlt eine Using-Direktive oder ein Assemblyverweis?)    F:\Downloads\Neuer Ordner\Cudafy\Cudafy.UnitTests\RelectorAddInFunctionsTests.cs    109    10    Cudafy.UnitTests
Fehler    35    Der Typ- oder Namespacename "Test" konnte nicht gefunden werden. (Fehlt eine Using-Direktive oder ein Assemblyverweis?)    F:\Downloads\Neuer Ordner\Cudafy\Cudafy.UnitTests\RelectorAddInFunctionsTests.cs    116    10    Cudafy.UnitTests
Fehler    37    Der Typ- oder Namespacename "Test" konnte nicht gefunden werden. (Fehlt eine Using-Direktive oder ein Assemblyverweis?)    F:\Downloads\Neuer Ordner\Cudafy\Cudafy.UnitTests\ReflectorAddInTypeTest.cs    117    10    Cudafy.UnitTests
Fehler    39    Der Typ- oder Namespacename "Test" konnte nicht gefunden werden. (Fehlt eine Using-Direktive oder ein Assemblyverweis?)    F:\Downloads\Neuer Ordner\Cudafy\Cudafy.UnitTests\ReflectorAddInTypeTest.cs    123    10    Cudafy.UnitTests
Fehler    41    Der Typ- oder Namespacename "Test" konnte nicht gefunden werden. (Fehlt eine Using-Direktive oder ein Assemblyverweis?)    F:\Downloads\Neuer Ordner\Cudafy\Cudafy.UnitTests\RelectorAddInFunctionsTests.cs    123    10    Cudafy.UnitTests
Fehler    43    Der Typ- oder Namespacename "Test" konnte nicht gefunden werden. (Fehlt eine Using-Direktive oder ein Assemblyverweis?)    F:\Downloads\Neuer Ordner\Cudafy\Cudafy.UnitTests\ReflectorAddInTypeTest.cs    129    10    Cudafy.UnitTests
Fehler    45    Der Typ- oder Namespacename "Test" konnte nicht gefunden werden. (Fehlt eine Using-Direktive oder ein Assemblyverweis?)    F:\Downloads\Neuer Ordner\Cudafy\Cudafy.UnitTests\RelectorAddInFunctionsTests.cs    129    10    Cudafy.UnitTests
Fehler    47    Der Typ- oder Namespacename "Test" konnte nicht gefunden werden. (Fehlt eine Using-Direktive oder ein Assemblyverweis?)    F:\Downloads\Neuer Ordner\Cudafy\Cudafy.UnitTests\RelectorAddInFunctionsTests.cs    135    10    Cudafy.UnitTests
Fehler    49    Der Typ- oder Namespacename "Test" konnte nicht gefunden werden. (Fehlt eine Using-Direktive oder ein Assemblyverweis?)    F:\Downloads\Neuer Ordner\Cudafy\Cudafy.UnitTests\ReflectorAddInTypeTest.cs    142    10    Cudafy.UnitTests
Fehler    51    Der Typ- oder Namespacename "Test" konnte nicht gefunden werden. (Fehlt eine Using-Direktive oder ein Assemblyverweis?)    F:\Downloads\Neuer Ordner\Cudafy\Cudafy.UnitTests\ReflectorAddInTypeTest.cs    149    10    Cudafy.UnitTests
Fehler    8    Der Typ- oder Namespacename "TearDownAttribute" konnte nicht gefunden werden. (Fehlt eine Using-Direktive oder ein Assemblyverweis?)    F:\Downloads\Neuer Ordner\Cudafy\Cudafy.UnitTests\RelectorAddInFunctionsTests.cs    56    10    Cudafy.UnitTests
Fehler    32    Der Typ- oder Namespacename "TearDownAttribute" konnte nicht gefunden werden. (Fehlt eine Using-Direktive oder ein Assemblyverweis?)    F:\Downloads\Neuer Ordner\Cudafy\Cudafy.UnitTests\ReflectorAddInTypeTest.cs    112    10    Cudafy.UnitTests
Fehler    6    Der Typ- oder Namespacename "SetUpAttribute" konnte nicht gefunden werden. (Fehlt eine Using-Direktive oder ein Assemblyverweis?)    F:\Downloads\Neuer Ordner\Cudafy\Cudafy.UnitTests\RelectorAddInFunctionsTests.cs    50    10    Cudafy.UnitTests
Fehler    28    Der Typ- oder Namespacename "SetUpAttribute" konnte nicht gefunden werden. (Fehlt eine Using-Direktive oder ein Assemblyverweis?)    F:\Downloads\Neuer Ordner\Cudafy\Cudafy.UnitTests\ReflectorAddInTypeTest.cs    106    10    Cudafy.UnitTests
Fehler    1    Der Typ- oder Namespacename "NUnit" konnte nicht gefunden werden. (Fehlt eine Using-Direktive oder ein Assemblyverweis?)    F:\Downloads\Neuer Ordner\Cudafy\Cudafy.UnitTests\ReflectorAddInTypeTest.cs    26    7    Cudafy.UnitTests
Fehler    2    Der Typ- oder Namespacename "NUnit" konnte nicht gefunden werden. (Fehlt eine Using-Direktive oder ein Assemblyverweis?)    F:\Downloads\Neuer Ordner\Cudafy\Cudafy.UnitTests\RelectorAddInFunctionsTests.cs    26    7    Cudafy.UnitTests
Fehler    3    Der Typ- oder Namespacename "NUnit" konnte nicht gefunden werden. (Fehlt eine Using-Direktive oder ein Assemblyverweis?)    F:\Downloads\Neuer Ordner\Cudafy\Cudafy.UnitTests\CudafyUnitTest.cs    28    7    Cudafy.UnitTests
Fehler    33    "Cudafy.UnitTests.RelectorAddInTypeTests.TearDown()" ist ein(e) "Methode", wird aber wie ein(e) "Typ" verwendet.    F:\Downloads\Neuer Ordner\Cudafy\Cudafy.UnitTests\ReflectorAddInTypeTest.cs    112    10    Cudafy.UnitTests
Fehler    29    "Cudafy.UnitTests.RelectorAddInTypeTests.SetUp()" ist ein(e) "Methode", wird aber wie ein(e) "Typ" verwendet.    F:\Downloads\Neuer Ordner\Cudafy\Cudafy.UnitTests\ReflectorAddInTypeTest.cs    106    10    Cudafy.UnitTests
Fehler    9    "Cudafy.UnitTests.RelectorAddInFunctionsTests.TearDown()" ist ein(e) "Methode", wird aber wie ein(e) "Typ" verwendet.    F:\Downloads\Neuer Ordner\Cudafy\Cudafy.UnitTests\RelectorAddInFunctionsTests.cs    56    10    Cudafy.UnitTests
Fehler    7    "Cudafy.UnitTests.RelectorAddInFunctionsTests.SetUp()" ist ein(e) "Methode", wird aber wie ein(e) "Typ" verwendet.    F:\Downloads\Neuer Ordner\Cudafy\Cudafy.UnitTests\RelectorAddInFunctionsTests.cs    50    10    Cudafy.UnitTests

Coordinator
Jun 27, 2012 at 9:23 AM

No problem about it being in German.  Your problem is that you do not have NUnit installed.  This is for the unit tests.  You have two choices:

  1. Go to Configuration Manager in Visual Studio and uncheck the unit test projects,
  2. Install NUnit (and also permit unsafe code in the project properties of Cudafy.UnitTests)

I'd naturally recommend the second since you can learn a lot about Cudafy from the unit test projects.

Jun 27, 2012 at 9:41 AM

Thank you! I can now build all the files.

But I have to ask you another dumb question: After the build process many dlls were created, but I would like to have only one like in your release versions.

There actually is a Cudafy.NET.dll but it is only 4 KB big. Sorry :(

Coordinator
Jun 27, 2012 at 1:48 PM

A special commercial tool is used to merge all the dlls into one and this is not part of the source code.  Until we get a new release (shortly) you will unfortunately need to link to the individual dlls.

Jun 27, 2012 at 2:08 PM

that sounds great :) thanks for your assistance

Aug 15, 2012 at 4:26 PM

I'm dying for this new version, even if it's a beta to test.  I want to test the multi-GPU aspects.  CUDAFY is rocking AWS Cluster GPU for me!

Coordinator
Aug 17, 2012 at 8:26 AM

You can already do this if you build the project yourself.  We'll have a new official release next month - we may combine this with CUDA 5 support.

Coordinator
Aug 29, 2012 at 2:22 PM

Version 1.10 BETA is available in downloads.  It targets CUDA 5.0 RC for the Math libraries, otherwise working with CUDA 4.2, too.  Let me know how you  get on.