GET /api/v2/video/1210
HTTP 200 OK Vary: Accept Content-Type: text/html; charset=utf-8 Allow: GET, PUT, PATCH, HEAD, OPTIONS
{ "category": "SciPy 2012", "language": "English", "slug": "parallel-high-performance-statistical-bootstrappi", "speakers": [ "Aakash Prasad" ], "tags": [ "hpc" ], "id": 1210, "state": 1, "title": "Parallel High Performance Statistical Bootstrapping in Python", "summary": "", "description": "BLB (\"Bag of Little Bootstraps\") is a method to assess the quality of a\nstatistical estimator based upon subsets of sample distributions. BLB is a\nvariant of and solves the same class of problems as the general bootstrap.\nUnfortunately, the general bootstrap is a computationally demanding operation\nwhen given large data sets, and does not parallelize easily. BLB is an\nattractive alternative due to its its structural and computational properties\nwhich allow for much better parallelization. However, two obstacles exist to\nrealizing this parallelism in practice. First, expressing the parallelism\ninherent in the algorithm requires quite different code depending on the\nplatform (for example, multi-core with Cilk-aware compiler vs. GPU with CUDA\nor OpenCL vs. shared-nothing cloud computing with Spark or Hadoop). Second,\neven given the skeleton code for a particular platform, the specific estimator\nfunction being computed is different for each application, making it difficult\nto encapsulate the BLB pattern in a library. We apply the SEJITS technology\n(Selective Embedded Just-in-Time Specialization) to solve both problems:\nscientists can write applications in Python that make use of estimator\nfunctions also written in (a subset of) Python, and just-in-time code\ngeneration techniques are used to \"lower\" these functions to efficiency-level\nlanguages and inline them into an execution template optimized for each type\nof parallel platform; in this paper we focus on the multicore environment. The\nresult is that Python applications that use BLB are source- and performance-\nportable, with performance comparable to hand-written code in low-level\nlanguages. We expect that code variants produced for the multicore environment\ncan reasonably support data sets in the order of tens of gigabytes in size,\nand that variants for the cloud environment can support data sets in the order\nof terabytes in size. Preliminary results from a simple application of linear\nregression show a 13.6x speedup as a result of using 16 cores instead of 1\ncore, and this parallel performance was obtained by simply coding the linear\nestimator function in Python. Our runtime compiler (specializer) for BLB\naugments a growing family of such compilers that will ultimately allow Python\napplications to make use of generic computational patterns across different\nplatforms.\n\n", "quality_notes": "", "copyright_text": "CC BY-SA", "embed": "<object width=\"640\" height=\"390\"><param name=\"movie\" value=\";hl=en_US\"></param><param name=\"allowFullScreen\" value=\"true\"></param><param name=\"allowscriptaccess\" value=\"always\"></param><embed src=\";hl=en_US\" type=\"application/x-shockwave-flash\" width=\"640\" height=\"390\" allowscriptaccess=\"always\" allowfullscreen=\"true\"></embed></object>", "thumbnail_url": "", "duration": null, "video_ogv_length": null, "video_ogv_url": "", "video_ogv_download_only": false, "video_mp4_length": null, "video_mp4_url": "", "video_mp4_download_only": false, "video_webm_length": null, "video_webm_url": "", "video_webm_download_only": false, "video_flv_length": null, "video_flv_url": "", "video_flv_download_only": false, "source_url": "", "whiteboard": "", "recorded": "2012-07-18", "added": "2012-08-31T16:35:03", "updated": "2014-04-08T20:28:27.152" }