locked
Is VOLTA suitable for Grid Computing? RRS feed

  • Question

  •  

    Is VOLTA suitable/appropriate for load-balancing .NET assemblies across multiple machines? That is, does VOLTA help with data/task parallelism across machines the same way that Microsoft Parallel Extensions help with data/task parallelism across processors on a multicore/multiprocessor machine?

     

    Thanks!

     

    Taiwo

    Saturday, December 8, 2007 1:23 PM

Answers

  • Hello Taiwo --

     

    Good observation. Tier-splitting and load balancing are similar in that they both deal with partitioning. They differ though in that the tier-splitting implemented in the technology preview focuses on the static partitioning of functionality between the client and the server. In contrast, load balancing focuses on the dynamic partitioning of workload, which we are not covering in the current technology preview.

     

    What load-balancing scenarios are you interested in tackling with Volta? What is at the top of your list?

     

    Thanks,

     

    -dm

     

     

    Sunday, December 9, 2007 4:56 AM

All replies

  • Hello Taiwo --

     

    Good observation. Tier-splitting and load balancing are similar in that they both deal with partitioning. They differ though in that the tier-splitting implemented in the technology preview focuses on the static partitioning of functionality between the client and the server. In contrast, load balancing focuses on the dynamic partitioning of workload, which we are not covering in the current technology preview.

     

    What load-balancing scenarios are you interested in tackling with Volta? What is at the top of your list?

     

    Thanks,

     

    -dm

     

     

    Sunday, December 9, 2007 4:56 AM
  • Hi Dragos:

     

    Thanks for your clarification.

     

    I am interested in the following scenario:

     

    1. A web service call (web method or service method) comes into a hosted service

     

    2. The web/service method calls a method (e.g. CompareImage) in a local .NET DLL that does long computation, such as comparing a source image to those in millions of files on the disk (or in a database)

     

    3. I would like to distribute the call to CompareImage across similar .NET DLLs running on other machines on the network based on the machines' response time and resource availability. I can specify the range (array start and end indexes) of target files or images that CompareImage should work with and then provide a Delegate method that each CompareImage would call when it is done with its task. I would then assemble my result in this delegate method. It would be great to be able to cancel an existing call to CompareImage (in case the desired result has been obtained before all calls to CompareImage have finished executing)

     

    There will always be limitations in the number of cores per machine and number of processors per core. One can overcome this limitation by utilizing processing power on other machines in the network (or grid). While Microsoft Parallel Extensions does concurrency on a multi-core/multi-processor machine, it does NOT help with distributing work across machines.

     

    I don't know what the easiest and most efficient programming paradigm should be to make distributed calls. Should we annotate the distributed methods with attributes? How should we let the system know which machines are available to host the distributed components, etc.?

     

    Let me know if I need to expound more on this.

     

    Thanks!

     

    Taiwo

     

    Tuesday, December 11, 2007 5:03 PM