Large Data in MATLAB: A Case Study in Seismic Data Processing

These are the files used in the webinar on Feb. 23, 2011. This file provides a brief description of the contents of the demo files and the steps needed to download the public data sources for use with this demo. You can watch the archived version of this webinar at


Data Sources

Two sources of data are used.

The fault model is a slice from an SEG/EAGE model which was take from The velocity model is needed to run faultModelMigration.m.

The salt tooth model is from the BP Benchmark data set from:

You will need to download the BP Benchmark files to run the saltModelMigrationRTM.m and migrateExample.m files.

Required Products and Hardware

MATLAB. You will also need Parallel Computing Toolbox and MATLAB Distributed Computing Server if you want to speed up computations using multiple MATLAB Workers (on a multicore desktop or across a cluster of computers) or run the GPU example. This demo was developed and tested on R2010b.

For the GPU examle, you will need a supported GPU. Consult to determine if your hardware is supported.

Run setup.m

The script setup.m will create the directories needed and download the data from the public sources. It will also generate the 20GB file used once all the data has completed downloading. This can take several hours, depending upon your network connection and computer. It is recomended to run this script when you don't need your computer for several hours (or run overnight). Once this completes, you will be able to run the demos.

Parallel Computing Setup

migrateExample.m uses parallel computing to run the migration. If you don't use parallel computing, it will run for 2-3 days, or more if depending upon your machine. To set up parallel computing, consult the doc. You will also need to change the matlabpool call in migrateExample.m to point to your resources.

GPU Setup

You will need to compile the CUDA kernels (*.cu files in gpu directory). Assuming your system is configured correctly, you can run the build.m file to compile and test the kernels are working correctly.

Recommended Demo Order

To get the most out of this example. Run these demos in this order:

You should first uncomment the sections of code that save videos if you want them created.

Directory and File Listing

Listing of directories and files, post run of the demo files.

Top level directory (LargeDataSeismic)

.                             README.m                      faultModelMigrationRTM.m      migrateExample.m              setup.m                       
..                            README.pdf                    fileReader                    migration                     speedup.fig                   
LargeDataSeismicWebinar.pdf   benchmark                     gpu                           saltModelMigrationRTM.m       videos                        
LargeDataSeismicWebinar.pptx  faultModelData                html                          saltToothModelData            

Benchmark data directory

dir benchmark
.                             central_shot_674.gif          shots0401_0600.segy           shots1201_1348.segy           
..                            eage_abstract.pdf             shots0601_0800.segy           travelTime.dat                
README.pdf                    shots0001_0200.segy           shots0801_1000.segy           vel_6.25m.gif                 
README_Modification.txt       shots0201_0400.segy           shots1001_1200.segy           vel_z6.25m_x12.5m_exact.segy  

faultModelData directory stores the intermediate results generated from faultModelMigrationRTM.m.

dir faultModelData
.                   rtmsnapshot42.mat   rtmsnapshot78.mat   shotfdm22.mat       shotfdm58.mat       shotfdm93.mat       snapshot38.mat      snapshot73.mat      
..                  rtmsnapshot43.mat   rtmsnapshot79.mat   shotfdm23.mat       shotfdm59.mat       shotfdm94.mat       snapshot39.mat      snapshot74.mat      
rtmsnapshot1.mat    rtmsnapshot44.mat   rtmsnapshot8.mat    shotfdm24.mat       shotfdm6.mat        shotfdm95.mat       snapshot4.mat       snapshot75.mat      
rtmsnapshot10.mat   rtmsnapshot45.mat   rtmsnapshot80.mat   shotfdm25.mat       shotfdm60.mat       shotfdm96.mat       snapshot40.mat      snapshot76.mat      
rtmsnapshot100.mat  rtmsnapshot46.mat   rtmsnapshot81.mat   shotfdm26.mat       shotfdm61.mat       shotfdm97.mat       snapshot41.mat      snapshot77.mat      
rtmsnapshot11.mat   rtmsnapshot47.mat   rtmsnapshot82.mat   shotfdm27.mat       shotfdm62.mat       shotfdm98.mat       snapshot42.mat      snapshot78.mat      
rtmsnapshot12.mat   rtmsnapshot48.mat   rtmsnapshot83.mat   shotfdm28.mat       shotfdm63.mat       shotfdm99.mat       snapshot43.mat      snapshot79.mat      
rtmsnapshot13.mat   rtmsnapshot49.mat   rtmsnapshot84.mat   shotfdm29.mat       shotfdm64.mat       snapshot1.mat       snapshot44.mat      snapshot8.mat       
rtmsnapshot14.mat   rtmsnapshot5.mat    rtmsnapshot85.mat   shotfdm3.mat        shotfdm65.mat       snapshot10.mat      snapshot45.mat      snapshot80.mat      
rtmsnapshot15.mat   rtmsnapshot50.mat   rtmsnapshot86.mat   shotfdm30.mat       shotfdm66.mat       snapshot100.mat     snapshot46.mat      snapshot81.mat      
rtmsnapshot16.mat   rtmsnapshot51.mat   rtmsnapshot87.mat   shotfdm31.mat       shotfdm67.mat       snapshot11.mat      snapshot47.mat      snapshot82.mat      
rtmsnapshot17.mat   rtmsnapshot52.mat   rtmsnapshot88.mat   shotfdm32.mat       shotfdm68.mat       snapshot12.mat      snapshot48.mat      snapshot83.mat      
rtmsnapshot18.mat   rtmsnapshot53.mat   rtmsnapshot89.mat   shotfdm33.mat       shotfdm69.mat       snapshot13.mat      snapshot49.mat      snapshot84.mat      
rtmsnapshot19.mat   rtmsnapshot54.mat   rtmsnapshot9.mat    shotfdm34.mat       shotfdm7.mat        snapshot14.mat      snapshot5.mat       snapshot85.mat      
rtmsnapshot2.mat    rtmsnapshot55.mat   rtmsnapshot90.mat   shotfdm35.mat       shotfdm70.mat       snapshot15.mat      snapshot50.mat      snapshot86.mat      
rtmsnapshot20.mat   rtmsnapshot56.mat   rtmsnapshot91.mat   shotfdm36.mat       shotfdm71.mat       snapshot16.mat      snapshot51.mat      snapshot87.mat      
rtmsnapshot21.mat   rtmsnapshot57.mat   rtmsnapshot92.mat   shotfdm37.mat       shotfdm72.mat       snapshot17.mat      snapshot52.mat      snapshot88.mat      
rtmsnapshot22.mat   rtmsnapshot58.mat   rtmsnapshot93.mat   shotfdm38.mat       shotfdm73.mat       snapshot18.mat      snapshot53.mat      snapshot89.mat      
rtmsnapshot23.mat   rtmsnapshot59.mat   rtmsnapshot94.mat   shotfdm39.mat       shotfdm74.mat       snapshot19.mat      snapshot54.mat      snapshot9.mat       
rtmsnapshot24.mat   rtmsnapshot6.mat    rtmsnapshot95.mat   shotfdm4.mat        shotfdm75.mat       snapshot2.mat       snapshot55.mat      snapshot90.mat      
rtmsnapshot25.mat   rtmsnapshot60.mat   rtmsnapshot96.mat   shotfdm40.mat       shotfdm76.mat       snapshot20.mat      snapshot56.mat      snapshot91.mat      
rtmsnapshot26.mat   rtmsnapshot61.mat   rtmsnapshot97.mat   shotfdm41.mat       shotfdm77.mat       snapshot21.mat      snapshot57.mat      snapshot92.mat      
rtmsnapshot27.mat   rtmsnapshot62.mat   rtmsnapshot98.mat   shotfdm42.mat       shotfdm78.mat       snapshot22.mat      snapshot58.mat      snapshot93.mat      
rtmsnapshot28.mat   rtmsnapshot63.mat   rtmsnapshot99.mat   shotfdm43.mat       shotfdm79.mat       snapshot23.mat      snapshot59.mat      snapshot94.mat      
rtmsnapshot29.mat   rtmsnapshot64.mat   shotfdm1.mat        shotfdm44.mat       shotfdm8.mat        snapshot24.mat      snapshot6.mat       snapshot95.mat      
rtmsnapshot3.mat    rtmsnapshot65.mat   shotfdm10.mat       shotfdm45.mat       shotfdm80.mat       snapshot25.mat      snapshot60.mat      snapshot96.mat      
rtmsnapshot30.mat   rtmsnapshot66.mat   shotfdm100.mat      shotfdm46.mat       shotfdm81.mat       snapshot26.mat      snapshot61.mat      snapshot97.mat      
rtmsnapshot31.mat   rtmsnapshot67.mat   shotfdm11.mat       shotfdm47.mat       shotfdm82.mat       snapshot27.mat      snapshot62.mat      snapshot98.mat      
rtmsnapshot32.mat   rtmsnapshot68.mat   shotfdm12.mat       shotfdm48.mat       shotfdm83.mat       snapshot28.mat      snapshot63.mat      snapshot99.mat      
rtmsnapshot33.mat   rtmsnapshot69.mat   shotfdm13.mat       shotfdm49.mat       shotfdm84.mat       snapshot29.mat      snapshot64.mat      travelTime.mat      
rtmsnapshot34.mat   rtmsnapshot7.mat    shotfdm14.mat       shotfdm5.mat        shotfdm85.mat       snapshot3.mat       snapshot65.mat      velocityModel.mat   
rtmsnapshot35.mat   rtmsnapshot70.mat   shotfdm15.mat       shotfdm50.mat       shotfdm86.mat       snapshot30.mat      snapshot66.mat      
rtmsnapshot36.mat   rtmsnapshot71.mat   shotfdm16.mat       shotfdm51.mat       shotfdm87.mat       snapshot31.mat      snapshot67.mat      
rtmsnapshot37.mat   rtmsnapshot72.mat   shotfdm17.mat       shotfdm52.mat       shotfdm88.mat       snapshot32.mat      snapshot68.mat      
rtmsnapshot38.mat   rtmsnapshot73.mat   shotfdm18.mat       shotfdm53.mat       shotfdm89.mat       snapshot33.mat      snapshot69.mat      
rtmsnapshot39.mat   rtmsnapshot74.mat   shotfdm19.mat       shotfdm54.mat       shotfdm9.mat        snapshot34.mat      snapshot7.mat       
rtmsnapshot4.mat    rtmsnapshot75.mat   shotfdm2.mat        shotfdm55.mat       shotfdm90.mat       snapshot35.mat      snapshot70.mat      
rtmsnapshot40.mat   rtmsnapshot76.mat   shotfdm20.mat       shotfdm56.mat       shotfdm91.mat       snapshot36.mat      snapshot71.mat      
rtmsnapshot41.mat   rtmsnapshot77.mat   shotfdm21.mat       shotfdm57.mat       shotfdm92.mat       snapshot37.mat      snapshot72.mat      

fileReader directory contains the SEG Y file reader object used to read SEGY files in benchmark folder. Note that these fileReaders have not been fully tested against SEGY/SEGD/SEG2 specifications. No gurantees are provided that they work on all SEGx formatted files.

dir fileReader
.                    Seg2FileReader.m     SegyMemmap.m         ibm2ieee.m           
..                   SegYFileReader.m     SeismicFileReader.m  travelTimeMemmap.m   

gpu directory contains the files used to speed up computations usin a GPU.

dir gpu
.                 build.m           fm2d_gpu.m        fm2d_kernel.ptx   
..                dat4gpu.mat    rtm2d_gpu.m       rtm2d_kernel.ptx  

Migration routines and utillity functions

dir migration
.                    dA.mat               migrate.m            ray2d.m              rtm2d.m              shot2RecTime.m       
..                   fm2d.m               plotProgress.m       ricker.m             seismic.m            shotRecordLocator.m  

saltToothModelData directory stores intermediate results generated from saltModelMigrationRTM.m.

dir saltToothModelData
.               shotfdm13.mat   shotfdm19.mat   shotfdm24.mat   shotfdm8.mat    snapshot13.mat  snapshot19.mat  snapshot24.mat  snapshot8.mat   
..              shotfdm14.mat   shotfdm2.mat    shotfdm3.mat    shotfdm9.mat    snapshot14.mat  snapshot2.mat   snapshot3.mat   snapshot9.mat   
shotfdm1.mat    shotfdm15.mat   shotfdm20.mat   shotfdm4.mat    snapshot1.mat   snapshot15.mat  snapshot20.mat  snapshot4.mat   travelTime.mat  
shotfdm10.mat   shotfdm16.mat   shotfdm21.mat   shotfdm5.mat    snapshot10.mat  snapshot16.mat  snapshot21.mat  snapshot5.mat   
shotfdm11.mat   shotfdm17.mat   shotfdm22.mat   shotfdm6.mat    snapshot11.mat  snapshot17.mat  snapshot22.mat  snapshot6.mat   
shotfdm12.mat   shotfdm18.mat   shotfdm23.mat   shotfdm7.mat    snapshot12.mat  snapshot18.mat  snapshot23.mat  snapshot7.mat   

videos contains videos generated from results

dir videos
.                                FaultModelKirchhoffBone.avi      FaultModelShots.avi              saltToothMigrationKirchhoff.avi  seismicSurveyAnimation.mp4       
..                               FaultModelRTM.avi                FaultModelTravelTime.avi         saltToothMigrationRTM.avi        velocityShotAnimation.avi        
FaultModelKirchhoff.avi          FaultModelRTMBone.avi            migrationAnimation.avi           saltToothModelShots.avi