{"id":7,"date":"2015-12-09T17:18:50","date_gmt":"2015-12-09T17:18:50","guid":{"rendered":"http:\/\/www.sqrlab.ca\/csci5100g\/?page_id=7"},"modified":"2015-12-09T17:23:56","modified_gmt":"2015-12-09T17:23:56","slug":"resources-links","status":"publish","type":"page","link":"http:\/\/www.sqrlab.ca\/csci5100g\/resources-links\/","title":{"rendered":"Resources &#038; Links"},"content":{"rendered":"<h3>Programming Language Support for Concurrency<\/h3>\n<ul>\n<li>Java\n<ul>\n<li><a href=\"http:\/\/java.sun.com\/\">java.sun.com<\/a> &#8211; main website for everything Java<\/li>\n<li><a href=\"http:\/\/java.sun.com\/j2se\/1.5.0\/docs\/api\/java\/util\/concurrent\/package-summary.html\">java.util.concurrent<\/a> &#8211; Java concurrency package<\/li>\n<li><a href=\"http:\/\/gee.cs.oswego.edu\/dl\/jsr166\/dist\/jsr166ydocs\/\">ForkJoinExecutor<\/a> &#8211; will be in Java 7<\/li>\n<li><a href=\"http:\/\/artisans-serverintellect-com.si-eioswww6.com\/default.asp?W1\">Java Concurrency Wiki<\/a> &#8211; good resource on the current and future state of concurreny in Java<\/li>\n<li><a href=\"http:\/\/aspen.ucs.indiana.edu\/pss\/HPJava\/mpiJava.html\">mpiJava<\/a> &#8211; project to support MPI in Java<\/li>\n<li><a href=\"http:\/\/code.google.com\/p\/jconch\/\">JConch<\/a> &#8211; Java concurrency handler<\/li>\n<li><a href=\"http:\/\/code.google.com\/p\/jscoop\/\">JScoop<\/a> &#8211; based on a concurreny extension for Eiffel called SCOOP. It adds two annotations (@seperate and @await) to Java that support object execution on multiple processors.<\/li>\n<\/ul>\n<\/li>\n<li>C++ and C\n<ul>\n<li><a href=\"https:\/\/computing.llnl.gov\/tutorials\/pthreads\/\">POSIX Thread Library<\/a> &#8211; also known as pthreads (C\/C++)<\/li>\n<li>Variations or extensions of pthreads include <a href=\"http:\/\/www.gnu.org\/software\/pth\/\">GNU Pth<\/a> (UNIX\u00a0only)<\/li>\n<li><a href=\"http:\/\/openmp.org\/wp\/openmp-specifications\/\">OpenMP<\/a> (Open Multi-Processing) API\u00a0&#8211; supports shared memory multiprocessing (C\/C++)<\/li>\n<li><a href=\"http:\/\/software.intel.com\/en-us\/articles\/intel-concurrent-collections-for-cc\/\">Intel Concurrent Collections<\/a> (C++)<\/li>\n<li><a href=\"http:\/\/www.mcs.anl.gov\/research\/projects\/mpi\/index.html\">MPI<\/a>\u00a0&#8211; details on the standard and language support<\/li>\n<li><a href=\"http:\/\/en.wikipedia.org\/wiki\/Grand_Central_Dispatch\">Grand Central Dispatch<\/a> (GCD)<\/li>\n<\/ul>\n<\/li>\n<li>Scala &#8211; <a href=\"http:\/\/www.scala-lang.org\/\">http:\/\/www.scala-lang.org\/<\/a>\n<ul>\n<li><a href=\"http:\/\/www.scala-lang.org\/node\/242\">Actors<\/a> &#8211; primary concurrency construct in Scala<\/li>\n<\/ul>\n<\/li>\n<li>X10 &#8211; <a href=\"http:\/\/x10-lang.org\/\">http:\/\/x10-lang.org\/<\/a>\n<ul>\n<li>a course on <a href=\"http:\/\/ppppcourse.ning.com\/forum\/topics\/home-page-for-lecture-notes?\">Principles and Practices of Parallel Programming<\/a> in X10<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<p>A fairly <a href=\"http:\/\/en.wikipedia.org\/wiki\/Concurrent_computing\">complete list<\/a> of concurrent programming languages is available on Wikipedia.<\/p>\n<h3>Design Patterns for Concurrency<\/h3>\n<ul>\n<li><a href=\"http:\/\/cslabs.science.uoit.ca\/concurr-catalog\/\">Concurrency Anti-Pattern Catalog for Java<\/a><\/li>\n<li><a href=\"http:\/\/en.wikipedia.org\/wiki\/Concurrency_pattern\">Concurrency Patterns<\/a><\/li>\n<\/ul>\n<h3>Refactoring for Concurrency<\/h3>\n<ul>\n<li><a href=\"https:\/\/netfiles.uiuc.edu\/dig\/RefactoringInfo\/tools\/Concurrencer\/\">Concurrencer<\/a> &#8211; a tool to refactor a sequential Java program into a concurrent Java program. Three refactorings included &#8220;&#8230;convert int to AtomicInteger, convert.HashMap to ConcurrentHashMap, convert sequential divide-and-conquer algorithm into a parallel divide-and-conquer.&#8221;<\/li>\n<li><a href=\"https:\/\/netfiles.uiuc.edu\/dig\/RefactoringInfo\/tools\/ReLooper\/\">ReLooper<\/a> &#8211; parallelize loops in Java<\/li>\n<li><a href=\"https:\/\/netfiles.uiuc.edu\/dig\/RefactoringInfo\/tools\/Immutator\/\">Immutator<\/a> &#8211; conver a mutable class into an immutable class in Java<\/li>\n<\/ul>\n<h3>Testing (and Dynamic Analysis) Tools for Concurrency<\/h3>\n<ul>\n<li><a href=\"http:\/\/www.alphaworks.ibm.com\/tech\/contest\">ConTest<\/a> &#8211; IBM concurrent testing tool that inserts random delays into Java bytecode<\/li>\n<li><a href=\"http:\/\/www.itee.uq.edu.au\/~testcon\/\">ConAn<\/a> &#8211; a thread testing tool for Java<\/li>\n<li><a href=\"http:\/\/research.microsoft.com\/en-us\/projects\/chess\/\">CHESS<\/a>\u00a0&#8211; a Microsoft tool for concurrent testing in Visual Studio<\/li>\n<li><a href=\"http:\/\/srl.cs.berkeley.edu\/~ksen\/calfuzzer\/\">CalFuzzer<\/a> &#8211; an active testing framework<\/li>\n<li><a href=\"http:\/\/faculty.uoit.ca\/bradbury\/conman\/\">ConMAn<\/a> &#8211; mutation testing tool for concurrent programs written in Java<\/li>\n<li><a href=\"http:\/\/faculty.uoit.ca\/bradbury\/sqrg\/papers\/ICSM2010.html\">ConcurrencyCloner<\/a> &#8211; clone detection tool that detects user specified patterns (intended for project-specific bug detection). Can be combined with ConTest tool.<\/li>\n<li><a href=\"http:\/\/www.coverity.com\/products\/dynamic-analysis.html\">Coverity Dynamic Analysis<\/a> &#8211; commercial tool that detects bugs in multithreaded Java programs [<a href=\"http:\/\/scan.coverity.com\/\">http:\/\/scan.coverity.com\/<\/a>]<\/li>\n<li><a href=\"http:\/\/code.google.com\/p\/jchord\/\">Chord<\/a> &#8211; static and dynamic analysis tool for Java (listed below as well).<\/li>\n<li><a href=\"http:\/\/code.google.com\/p\/pluralism\/\">Pluralism<\/a> &#8211; Modular object protocol checking for Java<\/li>\n<li><a href=\"http:\/\/www.surelogic.com\/concurrency-tools.html\">Flashlight Dynamic Analysis<\/a> &#8211; a commercial tool from SureLogic that is currently available in early release.<\/li>\n<li>MPI testing tools: TotalView, Intel Message Checking, MPI Check, Marmot<\/li>\n<li><a href=\"http:\/\/people.csail.mit.edu\/akiezun\/jfuzz\/\">JFuzz<\/a> &#8211; testing tool built on Java PathFinder<\/li>\n<li><a href=\"http:\/\/mir.cs.illinois.edu\/~marinov\/publications\/GligoricETAL10MuTMuT.pdf\">MutMut<\/a> &#8211; concurrency mutation testing tool built on Java PathFinder<\/li>\n<li>AtomRacer &#8211; detection of data races and atomicity violations<\/li>\n<li>Eraser &#8211; detection of data races by tracking sets of locks that are acquired\/held during execution.<\/li>\n<\/ul>\n<h3>Static Analysis Tools for Concurrency<\/h3>\n<ul>\n<li><a href=\"http:\/\/findbugs.sourceforge.net\/\">FindBugs<\/a> &#8211; works on Java. In the list of bugs detected all of the &#8220;Multithreaded correctness&#8221; bugs are relevant to concurrency. Command-line interface or eclipse plugin (eclipse plugin update site:<a href=\"http:\/\/findbugs.cs.umd.edu\/eclipse\/\">http:\/\/findbugs.cs.umd.edu\/eclipse\/<\/a>)<\/li>\n<li><a href=\"http:\/\/en.wikipedia.org\/wiki\/Lint_%28software%29\">Lint<\/a> &#8211; a UNIX tool for C<\/li>\n<li><a href=\"http:\/\/artho.com\/jlint\/\">JLint<\/a> &#8211; a Java version of Lint that is available as stand alone or eclipse plugin (eclipse plugin update site:<a href=\"http:\/\/www.jutils.com\/eclipse-update\">http:\/\/www.jutils.com\/eclipse-update<\/a>)<\/li>\n<li><a href=\"http:\/\/www.parasoft.com\/jsp\/products\/jtest.jsp\">Parasoft JTest<\/a> &#8211; commercial tool that combines static analysis and testing. Has capability to check for thread safety in multithreaded Java programs.<\/li>\n<li><a href=\"http:\/\/www.coverity.com\/products\/static-analysis.html\">Coverity Static Analysis<\/a> and <a href=\"http:\/\/www.coverity.com\/products\/static-analysis-custom-checkers.html\">Static Analysis Custom Checkers<\/a> &#8211; commercial tool that can be used to create custom static analyzers to find concurrency bugs in C\/C++ programs.<\/li>\n<li><a href=\"http:\/\/www.grammatech.com\/products\/codesonar\/overview.html\">GrammaTech&#8217;s CodeSonar<\/a> &#8211; commercial tool that can detect a special case race condition and locking issues in C\/C++ (see <a href=\"http:\/\/www.grammatech.com\/products\/codesonar\/GrammaTechCodeSonarOverview.pdf\">datasheet<\/a> for list of all bugs detected).<\/li>\n<li><a href=\"http:\/\/code.google.com\/p\/jchord\/\">Chord<\/a> &#8211; static and dynamic analysis tool for Java (listed above as well).<\/li>\n<li><a href=\"http:\/\/www.surelogic.com\/concurrency-tools.html\">JSure for Concurrency<\/a> &#8211; a commercial tool from SureLogic that is currently available in early release.<\/li>\n<li><a href=\"http:\/\/secure.ucd.ie\/products\/opensource\/ESCJava2\/\">ESC\/Java 2<\/a> &#8211; can detect race conditions and deadlocks &#8211; requires annotation (<a href=\"http:\/\/secure.ucd.ie\/products\/opensource\/ESCJava2\/ESCTools\/docs\/ESCJAVA-UsersManual.html#2.7%20%20Pragmas%20for%20specifying%20synchronization\">more&#8230;<\/a>)<\/li>\n<li><a href=\"http:\/\/cseweb.ucsd.edu\/~jvoung\/race\/\">Relay<\/a> &#8211; static race detection<\/li>\n<li>RacerX &#8211; uses flow-sensitive static analysis tool for detection race conditions and deadlocks in C <a href=\"http:\/\/www.stanford.edu\/~engler\/racerx-sosp03.pdf\">[paper]<\/a><a href=\"http:\/\/www.stanford.edu\/~engler\/sosp03-racerx.pdf\">[slides]<\/a><\/li>\n<li>SyncChecker &#8211; a tool developed by F. Otto and T. Moschny for finding race conditions and deadlocks in Java. Reduce false positives by combining static analysis with points-to and may-happen-in-parallel (MHP) information.<\/li>\n<li>Warlock &#8211; race detection tool for C &#8211; requires annotation.<\/li>\n<\/ul>\n<h3>Model Checkings (and Formal Analysis) Tools for Concurrency<\/h3>\n<ul>\n<li><a href=\"http:\/\/babelfish.arc.nasa.gov\/trac\/jpf\">Java PathFinder\u00a0(JPF)<\/a> &#8211; NASA\u00a0open source model checker<\/li>\n<li><a href=\"http:\/\/code.google.com\/p\/moonwalker\/http:\/\/wwwhome.cs.utwente.nl\/~ruys\/moonwalker\/\">Moonwalker<\/a> &#8211; a model checker for .NET programs, it works on the CIL code.<\/li>\n<li><a href=\"http:\/\/bogor.projects.cis.ksu.edu\/\">Bogor<\/a> &#8211; extensible model checker that uses an input language (BIR) that is similar to Java bytecode<\/li>\n<li><a href=\"http:\/\/cm.bell-labs.com\/who\/god\/verisoft\/\">Verisoft<\/a> &#8211; a bounded model checker for C++<\/li>\n<li><a href=\"http:\/\/osl.cs.uiuc.edu\/~ksen\/cute\/\">CUTE<\/a> and <a href=\"http:\/\/osl.cs.uiuc.edu\/~ksen\/cute\/\">JCUTE<\/a> (a Concolic Unit Testing Engine for C and Java) &#8211; an explicit path bounded model checker that works on both sequential and concurrent code and is able to detect data races and deadlocks<\/li>\n<\/ul>\n","protected":false},"excerpt":{"rendered":"<p>Programming Language Support for Concurrency Java java.sun.com &#8211; main website for everything Java java.util.concurrent &#8211; Java concurrency package ForkJoinExecutor &#8211; will be in Java 7 Java Concurrency Wiki &#8211; good resource on the current and future state of concurreny in &hellip; <a href=\"http:\/\/www.sqrlab.ca\/csci5100g\/resources-links\/\">Continue reading <span class=\"meta-nav\">&rarr;<\/span><\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"open","ping_status":"open","template":"sidebar-page.php","meta":{"jetpack_post_was_ever_published":false,"footnotes":""},"class_list":["post-7","page","type-page","status-publish","hentry"],"jetpack_sharing_enabled":true,"jetpack_shortlink":"https:\/\/wp.me\/P739PJ-7","_links":{"self":[{"href":"http:\/\/www.sqrlab.ca\/csci5100g\/wp-json\/wp\/v2\/pages\/7","targetHints":{"allow":["GET"]}}],"collection":[{"href":"http:\/\/www.sqrlab.ca\/csci5100g\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"http:\/\/www.sqrlab.ca\/csci5100g\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"http:\/\/www.sqrlab.ca\/csci5100g\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"http:\/\/www.sqrlab.ca\/csci5100g\/wp-json\/wp\/v2\/comments?post=7"}],"version-history":[{"count":2,"href":"http:\/\/www.sqrlab.ca\/csci5100g\/wp-json\/wp\/v2\/pages\/7\/revisions"}],"predecessor-version":[{"id":17,"href":"http:\/\/www.sqrlab.ca\/csci5100g\/wp-json\/wp\/v2\/pages\/7\/revisions\/17"}],"wp:attachment":[{"href":"http:\/\/www.sqrlab.ca\/csci5100g\/wp-json\/wp\/v2\/media?parent=7"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}