All Projects → Hopobcn → FWI

Hopobcn / FWI

Licence: other
RTM

Programming Languages

c
50402 projects - #5 most used programming language
Cuda
1817 projects
CMake
9771 projects
shell
77523 projects

Projects that are alternatives of or similar to FWI

CryptoLogos
Hundreds of crypto logos simply named by their normalized contract address
Stars: ✭ 14 (-53.33%)
Mutual labels:  bsc
PancakeTokenSniper
BSC BNB Pancake token sniper, buy, take profit and rug check
Stars: ✭ 184 (+513.33%)
Mutual labels:  bsc
claw-compiler
CLAW Compiler for Performance Portability
Stars: ✭ 38 (+26.67%)
Mutual labels:  openacc
elte-ik-pti-bsc-zarovizsga
ELTE IK - Programtervező Informatikus BSc Záróvizsga tételek kidolgozása
Stars: ✭ 26 (-13.33%)
Mutual labels:  bsc
bscscan-python
The most popular asynchronous Python API for BscScan (Binance Smart Chain Explorer), available via PyPI.
Stars: ✭ 260 (+766.67%)
Mutual labels:  bsc
hiperc
High Performance Computing Strategies for Boundary Value Problems
Stars: ✭ 36 (+20%)
Mutual labels:  openacc
Pancakeswap Sniper
Barret 50 Cal. is a Pancakeswap sniping (front-runner) bot. It can be used to snipe in new coin listings, and obtain the best prices; or to place limit-buy and limit-sell orders.
Stars: ✭ 64 (+113.33%)
Mutual labels:  bsc
PancakeSwapPredictionBot
PancakeSwap V2 Prediction Bot With Machine Learning | Automated Strategy, Auto Betting, Auto Claim
Stars: ✭ 21 (-30%)
Mutual labels:  bsc
poly-flash
Flashloan on Polygon
Stars: ✭ 233 (+676.67%)
Mutual labels:  bsc
awesome-defi
Curated list of awesome DeFi protocols, dapps, wallets and other resources
Stars: ✭ 36 (+20%)
Mutual labels:  bsc
awesome-list-rpc-nodes-providers
A curated list of awesome Node providers and public PRC endpoints for Ethereum, BSC, xDAI, Fantom, Avalanche and more :)
Stars: ✭ 39 (+30%)
Mutual labels:  bsc
FwiFlow.jl
Elastic Full Waveform Inversion for Subsurface Flow Problems Using Intrusive Automatic Differentiation
Stars: ✭ 24 (-20%)
Mutual labels:  fwi
Rabby
The game-changing wallet for Ethereum and all EVM chains
Stars: ✭ 562 (+1773.33%)
Mutual labels:  bsc
PancakeSwapBot
PancakeSwap prediction bot
Stars: ✭ 38 (+26.67%)
Mutual labels:  bsc
uniswap-arbitrage-flash-swap
Uniswap flash swap arbitrage solidity contracts
Stars: ✭ 341 (+1036.67%)
Mutual labels:  bsc
hillfog
hillfog is an KPI, OKR (Objectives and Key Results), PDCA, BSC (balanced scorecard) web platform.
Stars: ✭ 18 (-40%)
Mutual labels:  bsc
JUDI.jl
Julia Devito inversion.
Stars: ✭ 71 (+136.67%)
Mutual labels:  fwi
bsc-archive-snapshot
Free public Binance Smart Chain (BSC) Archive Snapshot
Stars: ✭ 71 (+136.67%)
Mutual labels:  bsc
gpu-edu-workshops
Code examples for CUDA and OpenACC
Stars: ✭ 34 (+13.33%)
Mutual labels:  openacc
Bogged-Token-List
Multichain token lists by Bogged Finance
Stars: ✭ 106 (+253.33%)
Mutual labels:  bsc

FWI mini-app

Parallelization of a Reverse Time Migration (RTM) program using OpenACC/CUDA

Reverse time migration (RTM) modeling is a critical component in the seismic processing workflow of oil and gas exploration as well as for the understanding of energy release in subduction-zone earthquakes. With the help of high precision seismic sensors deployed on the field, it is possible to use the information gathered during seismic aftershocks and reverse-time migrate them. This can give scientists a large amount of highly accurate information of the seismic conditions of the region of interest.

Such analysis is critical after a large earthquake because it can help scientists know the state of a seismic fault and the probability of subsequent large aftershocks. As the number of aftershocks sky-rockets after a large earthquake, the amount of data to analyse grows really fast. Thus, it is mandatory to speed up the processing of all that information.

GTC 2018 Instructions

Getting Started

Prerequisites:

General prerequisites:

  • CMake 3.8 or later
  • C compiler (Tested with gcc and pgcc, clang and icc should also work with few modifications)

OpenACC prerequisites:

  • PGI 17.4 or later

CUDA prerequisites:

  • OpenACC prerequisites
  • CUDA 8 or later (nvcc)

How to get the code:

Pull the repo using git clone:

git clone https://github.com/Hopobcn/FWI.git

Download all pre-requisites using git submodules:

git submodule update --init --recursive

Build Instructions:

WARNING: Advice: Always make out-of-source builds (don't execute cmake from the project root directory):

Create a build directory:

mkdir build
cd build

Execute CMake to generate all the Makefiles required to compile the sequential implementation. And type make to compile the application.

cmake ..
make

Build Options:

CMake Options Default Value Description Observations
ENABLE_TESTS OFF Build tests Requires git submodule Unity
USE_MPI OFF Enable MPI compilation
USE_OPENMP OFF Enable OpenMP compilation Either OpenMP or OpenACC must be enabled not both
USE_OPENACC OFF Enable OpenACC compilation Requires compiler with OpenACC 2.5 or above
USE_CUDA_KERNELS OFF Enable CUDA kernels back-end Requires OpenACC to be enabled
PROFILE OFF Add profile information to the binary
PERFORM_IO OFF Load/Store dataset from disc Should be OFF when measuring performance
IO_STATS OFF Log fwrite/fread performance

Some examples:

OBS: sometimes, when changing options, CMake may complain or even refuse to generate the Makefiles. One safe solution is to remove all `build/*' contents and try again

  1. Sequential
cmake ..
make
  1. OpenMP
cmake -DUSE_OPENMP=ON ..
make
  1. OpenACC
cmake -DCMAKE_C_COMPILER=pgcc -DUSE_OPENACC=ON ..
make
  1. OpenACC + CUDA kernels
cmake -DCMAKE_C_COMPILER=pgcc -DUSE_OPENACC=ON -DUSE_CUDA_KERNELS=ON ..
make

How to execute FWI:

The fwi binary (located in the build/bin directory) depends on a single file: fwi_schedule.txt (located in data directory). The application also expects FWIDIR env var to be set to the project root directory:

export FWIDIR=/path/to/FWI/
bin/fwi fwi_schedule.txt

The fwi_schedule.txt is generated using the fwi-sched-generator which depends on fwi_params.txt and fwi_frequencies.txt files. Don't modify fwi_schedule.txt directly. If you wish to modify it, you should do so by modifiying params and frequiencies files and execute the generator:

bin/fwi-sched-generator fwi_params.txt fwi_frequencies.txt

CPU Profiling Instructions:

To profile the CPU execution, use -DPROFILE=ON to include -pg (gcc), -p (Intel) or -Mprof (PGI) automatically:

cmake -DCMAKE_C_COMPILER=gcc -DCMAKE_BUILD_TYPE=Release -DPROFILE=ON ..
make
<--- run application --->
<--- run gprof       --->

Authors

  • Samuel Rodríguez Original work - github.com/srodrb/FWI
  • Pau Farré Acceleration using GPUs/OpenACC+CUDA

See also the list of contributors who participated in this project.

License

This project is licensed under the BSD-3 License - see the LICENSE.md for details.

References

The OpenACC Application Programmin Interface V2.5

CUDA C Programming Guide

CMAKE Documentation

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].