ساخت سریع ترین رایانه جهان در آمریکا
دانشمندان آمریکایی در آزمایشگاه دولتی اسلحه «لوس آلاموس»، موفق به ساخت پر شتاب ترین کامپیوتر جهان موسوم به «رودرانر» شدهاند.
به گزارش سرویس علم و فن آوری آفتاب، این رایانه توانایی انجام 1000 تریلیون عملیات در ثانیه را داراست.
دانشکده انرژی موسسه IBM روز دوشنبه با اعلام این خبر افزود که این کامپیوتر قرار است برای یاری به برنامه ملی جمع آوری سلاح های هسته ای مورد استفاده قرار گیرد.
«سمیوئل بادمن» سخنگوی دانشکده انرژی در این باره اظهار داشت: « این کامپیوتر موسوم به رودرانر ( roadrunner )همچنین قرار است برای یافتن پاسخ برای مشکلات انرژی جهانی و گشودن درهای تازه به سوی دانش در پژوهش های بنیادی به کار گرفته شود.
منبع : http://www.aftabnews.ir/vdcdk50ytx095.html
Using DRMAA with Unicluster Express
Distributed Resource Management Application API (DRMAA) is a high-level API that allows Grid applications to submit, monitor and control jobs to one or more DRM systems. Grid Engine comes with support for C/C++ and java, and one can also download bindings for ruby and python. There is also a nice collection of HowTos that should provide a great start for anyone looking to start writing DRMAA applications. The latest version of Unicluster Express (UCE) bundles Grid Engine 6.1u3, which is installed under $GLOBUS_LOCATION/sge. The $GLOBUS_LOCATION refers to the UCE installation directory (/usr/local/unicluster by default), and all of the DRMAA libraries and java files are located in the $GLOBUS_LOCATION/sge/lib directory. In order to run DRMAA applications, one has to set $LD_LIBRARY_PATH to point to the appropriate (architecture dependent) directory. For my development (64-bit linux) cluster with default UCE installation I used the following setup:
$ source /usr/local/unicluster/unicluster-user-env.sh $ export LD_LIBRARY_PATH=/usr/local/unicluster/sge/lib/lx24-amd64 $ export JAVA_HOME=/opt/jdk $ export PATH=$JAVA_HOME/bin:$PATH
A very simple example of a java DRMAA application that submits a job to Grid Engine is shown below:
$ cat SimpleJob.java
import org.ggf.drmaa.DrmaaException;
import org.ggf.drmaa.JobTemplate;
import org.ggf.drmaa.Session;
import org.ggf.drmaa.SessionFactory;
public class SimpleJob {
public static void main(String[] args) {
SessionFactory factory = SessionFactory.getFactory();
Session session = factory.getSession();
try {
session.init("");
JobTemplate jt = session.createJobTemplate();
jt.setRemoteCommand("/home/veseli/simple_job.sh");
String id = session.runJob(jt);
System.out.println("Your job has been submitted with id " + id);
}
catch (DrmaaException e) {
System.out.println("Error: " + e.getMessage());
}
}
}
One can compile and run the above example using something like the following:
$ javac -classpath /usr/local/unicluster/sge/lib/drmaa.jar SimpleJob.java $ java -classpath .:/usr/local/unicluster/sge/lib/drmaa.jar SimpleJob Your job has been submitted with id 14 $ qstat -f queuename qtype used/tot. load_avg arch states ---------------------------------------------------------------------------- all.q@horatio.psvm.univa.com BP 1/1 0.36 lx24-amd64 14 0.55500 simple_job veseli r 06/20/2008 12:24:59 1 ---------------------------------------------------------------------------- all.q@romeo.psvm.univa.com BP 0/1 0.39 lx24-amd64 ---------------------------------------------------------------------------- all.q@yorick.psvm.univa.com BP 0/1 0.45 lx24-amd64 ---------------------------------------------------------------------------- headnodes.q@petruchio.psvm.uni IP 0/1 0.15 lx24-amd64 ---------------------------------------------------------------------------- special.q@horatio.psvm.univa.c BIP 0/1 0.36 lx24-amd64
I should point out that DRMAA is designed to be independent of any particular DRM. Those users that need job submission features or flags specific to Grid Engine can either use the “native specification” attribute, or they can use the “job category” attribute together with “qtask” files. In order to set native specification attribute in java one would use setNativeSpecification() method of the JobTemplate class (before the job submission line in the code):
jt.setNativeSpecification("-q special.q");
This method, however, makes your application dependent on the specific DRM you are working with at the moment. The above line will be interpreted correctly by Grid Engine, but may not be understood by other DRMs. In most cases a better solution is to use the job category attribute instead, and specify the DRM-dependent flags in the qtask file. For example, in order to submit your job to a particular Grid Engine queue in the java code one would have something like
jt.setJobCategory("special");
and use the qtask file to translate the “special” job category into appropriate Grid Engine flags:
$ cat ~/.qtask special -q special.q
The cluster global qtask file (defines cluster wide defaults) in UCE resides at $GLOBUS_LOCATION/sge/default/common/qtask. As shown above, user-specific qtask files that override and enhance cluster-wide definitions are found at ~/.qtask.
منبع : http://gridgurus.typepad.com
Aromatic Clouds?
If you weren’t at OSGC you missed a number of interesting presentations. From my perspective, one of the most intriguing technologies was EUCALYPTUS: Elastic Utility Computing Architecture for Linking Your Programs To Useful Systems.
Before I go on, I would like you to notice that anybody who is able to make an acronym out of eucalyptus has some time on their hands. Fortunately, they used this time to implement an open-source infrastructure for Elastic Computing. In particular, the goal of the project is to, "foster community research and development of Elastic/Utility/Cloud service implementation technologies, resource allocation strategies, service level agreement (SLA) mechanisms and policies, and usage models."
In my opinion, the most interesting facets of this project are:
My hope is that this project will not only get us all thinking about what we really need from a Cloud but also what we could improve... I plan to start working with this software as soon as it is available later this month.
منبع : http://gridgurus.typepad.com
|
ابر رايانه به تشخيص پوکي استخوان کمک مي کند
تهران-خبرگزاری جمهوری اسلامی (ایرنا): دانشمندان سوييسي از دستاورد جديدي در شبيه سازي ابر رايانه اي خبر دادند که مي تواند تا اندازه زيادي به تشخيص و درمان پوکي استخوان کمک کند. |
به گزارش خبرگزاري يونايتدپرس، در حاليکه پوکي يا کاهش تراکم استخوان همراه با افزايش خطر شکستگي معمولا در مراحل پيشرفته تشخيص داده مي شود، محققان "موسسه فناوري سوييس" و " آزمايشگاه تحقيقاتي IBM زوريخ" گفتند، تنها در چند دقيقه جامع ترين شبيه سازي ساختارهاي استخواني انسان را نشان دادند.
دانشمندان گفتند که دستاورد آنها مي تواند به ساخت ابزارهاي باليني بهتري براي تشخيص و درمان عارضه پوکي استخوان منجر شود که شايع ترين بيماري استخواني است .
IBM همچنين در بيانيه اي اعلام کرد: با اين شبيه سازي ها محققان مي توانند نوعي "نقشه حرارتي " پويا از استحکام استخوان تهيه کنند که دقيقا نشان مي دهد کجا ساختار استخوان آسيب مي بيند و احتمالا چه باري موجب شکستگي مي شود.
برپايه اين بيانيه، از چنين شبيه سازي هاي قوي مي توان مرتب در توموگرافي هاي آتي رايانه اي استفاده کرد و اين شبيه سازي ها توانايي پزشکان را براي تجزيه و تحليل خطر شکستگي ها افزايش مي دهد و از اين رو موجب بهبود درمان مي شود.
About Grid Engine Advanced Reservations
Advanced reservation (AR) capability is one of the most important new features of the upcoming Grid Engine 6.2 release. New command line utilities allow users and administrators to submit resource reservations (qrsub), view granted reservations (qrstat), or delete reservations (qrdel). Also, some of the existing commands are getting new switches. For example, the “-ar
$ qconf -sul arusers deadlineusers defaultdepartment
$ qconf -su arusers name arusers type ACL fshare 0 oticket 0 entries NONE
The “arusers” ACL can be modified via the “qconf -mu” command:
$ qconf -mu arusers veseli@tolkien.ps.uud.com modified "arusers" in userset list
$ qconf -su arusers name arusers type ACL fshare 0 oticket 0 entries veseli
Once designated as a member of this list, the user is allowed to submit ARs to Grid Engine:
[veseli@tolkien]$ qrsub -e 0805141450.33 -pe mpi 2 Your advance reservation 3 has been granted
[veseli@tolkien]$ qrstat
ar-id name owner state start at end at duration
-----------------------------------------------------------------------------------------
3 veseli r 05/14/2008 14:33:08 05/14/2008 14:50:33 00:17:25
[veseli@tolkien]$ qstat -f queuename qtype resv/used/tot. load_avg arch states --------------------------------------------------------------------------------- all.q@tolkien.ps.uud.com BIP 2/0/4 0.04 lx24-x86
For the sake of simplicity, in the above example we have a single queue (all.q) that has 4 job slots and a parallel environment (PE) mpi assigned to it. After reserving 2 slots for the mpi PE, there are only 2 slots left for running regular jobs until the above shown AR expires. Note that the "–e" switch for qrsub designates requested reservation end time in the format YYMMDDhhmm.ss. It is also worth pointing out that the qstat output changed slightly with respect to previous software releases in order to accommodate display of existing reservations. If we now submit several regular jobs, only 2 of them will be able to run:
[veseli@tolkien]$ qsub regular_job.sh
Your job 15 ("regular_job.sh") has been submitted
...
[veseli@tolkien]$ qsub regular_job.sh
Your job 19 ("regular_job.sh") has been submitted
[veseli@tolkien]$ qstat -f
queuename qtype resv/used/tot. load_avg arch states
---------------------------------------------------------------------------------
all.q@tolkien.ps.uud.com BIP 2/2/4 0.03 lx24-x86
15 0.55500 regular_jo veseli r 05/14/2008 14:34:32 1
16 0.55500 regular_jo veseli r 05/14/2008 14:34:32 1
############################################################################
- PENDING JOBS - PENDING JOBS - PENDING JOBS - PENDING JOBS - PENDING JOBS
############################################################################
17 0.55500 regular_jo veseli qw 05/14/2008 14:34:22 1
18 0.55500 regular_jo veseli qw 05/14/2008 14:34:23 1
19 0.55500 regular_jo veseli qw 05/14/2008 14:34:24 1
However, if we submit jobs that are part of the existing AR, those are allowed to run, while jobs submitted earlier are still pending:
[veseli@tolkien]$ qsub -ar 3 reserved_job.sh
Your job 20 ("reserved_job.sh") has been submitted
[veseli@tolkien]$ qsub -ar 3 reserved_job.sh
Your job 21 ("reserved_job.sh") has been submitted
[veseli@tolkien]$ qstat -f
queuename qtype resv/used/tot. load_avg arch states
---------------------------------------------------------------------------------
all.q@tolkien.ps.uud.com BIP 2/4/4 0.02 lx24-x86
15 0.55500 regular_jo veseli r 05/14/2008 14:34:32 1
16 0.55500 regular_jo veseli r 05/14/2008 14:34:32 1
20 0.55500 reserved_j veseli r 05/14/2008 14:35:02 1
21 0.55500 reserved_j veseli r 05/14/2008 14:35:02 1
############################################################################
- PENDING JOBS - PENDING JOBS - PENDING JOBS - PENDING JOBS - PENDING JOBS
############################################################################
17 0.55500 regular_jo veseli qw 05/14/2008 14:34:22 1
18 0.55500 regular_jo veseli qw 05/14/2008 14:34:23 1
19 0.55500 regular_jo veseli qw 05/14/2008 14:34:24 1
The above example illustrates how ARs work. As long as particular reservation is valid, only jobs that are designated as part of it can utilize resources that have been reserved. I think that AR will prove to be extremely valuable tool for planning grid resource usage, and I’m very pleased to see it in the new Grid Engine release.
منبع : http://gridgurus.typepad.com
Steaming Java
When Rich asked us to walk through a software development process, I immediately thought back to a conversation that I had with my friend Leif Wickland about building high-performance Java applications. So I immediately emailed him asking him for his best practices. We have both produced code that is as fast, if not faster than C compiled with optimization (for me it was using a 64-bit JRE on a x86_64 architecture with multiple cores).
That is not to say that if you were to spend time optimizing the equivalent C-code that it would not be made to go faster. Rather, the main point is that Java is a viable HPC language. On a related note, Brian Goetz of Sun has a very interesting discussion on IBM's DeveloperWorks, Urban performance legends, revisited on how garbage collection allows faster raw allocation performance.
However I digress… Here is a summary of what we both came up with (in no particular order):
منبع : http://gridgurus.typepad.com
Grid Interoperability and Interoperation
The high expectations raised by grid computing have favored the development and deployment of a growing number of grid infrastructures and middlewares. However, the interaction between these grids is still limited, so reducing the potential large-scale application of grid technology, in spite of efforts made by grid community. In this sense, the Open Grid Forum (OGF) is developing open standards for grid software interoperability, while the OGF's Grid Interoperation Now Community Group (GIN-CG) is coordinating a set of interoperation efforts among production grids. It is therefore clear that, according to OGF (as Laurence Field explains in his article entitled "Getting Grids to work together: interoperation is key to sharing"), there is a big difference between these two terms:
Since most common open standards to provide grid interoperability are still being defined and only a few have been consolidated, grid interoperation techniques, like adapters and gateways, are needed. An adapter is, according to different dictionaries of computer terms, “a device that allows one system to connect to and work with another”. On the other hand, a gateway is conceptually similar to an adapter, but it is implemented as an independent service, acting as a bridge between two systems. The main drawback of adapters is that grid middleware or tools must be modified to insert the adapters. Gateways can be accessed without changes on grid middleware or tools, but they can become a single point of failure or a scalability bottleneck.
GridWay provides support for some of the few established standards like DRMAA, JSDL or WSRF to achieve interoperability but, in the meanwhile, it also provides components to allow interoperation, like Middleware Access Drivers (MADs) acting as adapters for different grid services, and the GridGateWay, which is a WSRF GRAM service encapsulating an instance of GridWay, thus providing a gateway for resource management services.
GridWay 4.0.2, coinciding with the release of Globus Toolkit 4 and its new WS GRAM service, introduced an architecture for the execution manager module based on a MAD (Middleware Access Driver) to interface several grid execution services, like pre-WS GRAM and WS GRAM, even simultaneously. That architecture was presented in the paper entitled "A modular meta-scheduling architecture for interfacing with pre-WS and WS Grid resource management services" (E. Huedo, R. S. Montero and I. M. Llorente). GridWay 5.0 took advantage of this modular architecture to implement an information manager module with a MAD to interface several grid information services, and a transfer manager module with a MAD to interface several grid data services. Moreover, the scheduling process was decoupled from the dispatch manager through the use of an external and selectable scheduler module.

The resulting architecture, which is shown above, provides direct interoperation between different middleware stacks. In fact, we demonstrated at OGF22 the interoperation of three important grid infrastructures, namely EGEE (gLite-based), TeraGrid and OSG (both Globus-based), being coordinately used through a single GridWay instance by means of the appropriate adapters. To set an example, the application was written using the DRMAA OGF standard. GridWay documentation provides a lot of information on how to integrate GridWay in the main middleware stacks, like gLite, pre-WS and WS Globus, or ARC, and provides information on how to develop new drivers for other middlewares.

Regarding the GridGateWay, it is being used for provisioning resources from several infrastructures. For example, the German Astronomy Community Grid (GACG or AstroGrid-D) uses a GridGateWay as a central resource broker, providing metascheduling functionality to Globus-based submission tools (e.g. for workflow execution) without modification. GridAustralia also uses a GridGateWay as a WSRF interface for its central GridWay Metascheduler instance, allowing reliable, remote job submission.

Picture by AstroGrid-D
More information about the GridGateWay component is provided in its web page, as well as in this blog entry, which shows how to build Utility Computing infrastructures with this Globus-based gateway technology.
Reprinted from blog.dsa-research.org
منبع : http://gridgurus.typepad.com
Grid Engine 6.2 Beta Release
Grid Engine 6.2 will come with some interesting new features. In addition to advance resource reservations and array job interdependencies, this release will also contain a new Service Domain Manager (SDM) module, which will allow distributing computational resources between different services, such as different Grid Engine clusters or application servers. For example, SDM will be able to withdraw unneeded machines from one cluster (or application server) and assign it to a different one or keep it in its “spare resource pool”. It is also worth mentioning that Grid Engine (and SDM) documentation is moving to Sun’s wiki. The 6.2 beta release is available for download here.
منبع : http://gridgurus.typepad.com
Support for parallel jobs in distributed resource management software is probably one of those features that most people do not use, but those who do appreciate it a lot. Grid Engine supports parallel jobs via parallel environments (PE) that can be associated with cluster queues. New parallel environment is created using the qconf -ap
$ qconf -sp simple_pe pe_name simple_pe slots 4 user_lists NONE xuser_lists NONE start_proc_args /bin/true stop_proc_args /bin/true allocation_rule $round_robin control_slaves FALSE job_is_first_task FALSE urgency_slots min
In the above example, “slots” defines number of parallel tasks that can be run concurrently. The “user_lists” (“xuser_lists”) parameter should be a comma-separated list of user names that are allowed (denied) use of the given PE. If “user_lists” is set to NONE, any user that is not explicitly disallowed via the “xuser_lists” parameter. The “start_proc_args” and “stop_proc_args” represent command line of startup and shutdown procedures for the parallel environment. These commands are usually scripts customized for a specific parallel library intended for a given PE. They get executed for each parallel job, and are used, for example, start any necessary daemons that enable parallel job execution. The standard output (error) of these commands are redirected into
#!/bin/sh
#$ -S /bin/sh
slaveCnt=0
while read host slots q procs; do
slotCnt=0
while [ $slotCnt -lt $slots ]; do
slotCnt=`expr $slotCnt + 1`
slaveCnt=`expr $slaveCnt + 1`
ssh $host "/bin/hostname; sleep 10" > /tmp/slave.$slaveCnt.out 2>&1 &
done
done < $PE_HOSTFILE
while [ $slaveCnt -gt 0 ]; do
wait
slaveCnt=`expr $slaveCnt - 1`
done
echo "All done!"
After saving this script as "master.sh" and submitting your job using something like "qsub -pe simple_pe 3 master.sh" (where 3 is the number of parallel slots requested), you should be able to see your "slave" tasks running on the allocated machines. Note, however, that you must have password-less ssh access to the designated parallel compute hosts in order for the above script to work.
منبع : http://gridgurus.typepad.com
The Role of Open Source in Grid Computing
Grid Guru Ian Foster has a great piece in International Science Grid This Week. He talks about the significance of choosing open source licenses in the history of Globus, leading to a field dominated by open source software.
منبع : http://gridgurus.typepad.com