Shattering the supercomputer cardiac modeling wall; 2 and 3D simulations of complex models in real time on PCs and even on cellphones using GPUs.
Simulations of complex ionic cell models (20 to 90 variables) in 2 and 3D has been restricted mostly to the few cardiac groups who can code them and had access to large clusters or super-computers. We present for the first time the possibility of running and visualizing some of the most complex ionic models such as the TNNP and O’hara-Rudy human models in large 2D systems at close to real time, and in 3D ventricular or atrial structures using a simple PCs. All these simulations can be interactive with stimulation, defibrillation and modification of all parameters as the simulation runs.
These codes are written in WebGL (Web Graphics Library), a JavaScript API (application programming Interface) for rendering 3D graphics that completely integrates all the web standards, so they run on all web browser and under the WORE (write once, run everywhere) philosophy of Java. That is, WebGL programs can run independent of the device and operating system and do not require plug-ins or pre-compilation, just click and run. However the most important advantage of WebGL programs, is that they are written in JavaScript and shader codes, which are executed in parallel on the Graphics Processing Unit (GPU). So unlike other languages that access the power of GPUs such as CUDA, OpenCL or OpenAcc libraries, WebGL does not require downloading of toolkits nor compilation, and visualization is automatic. Since today, all PCs, tables and phones include powerful 3D capable graphic accelerating GPUs, WebGL programs will execute basically in all those devices.
In this talk I will describe some of our WebGL codes with extreme optimizations and show how these interactive simulations of complex models in 2 and 3D can be used now by anyone to study the dynamics of cardiac arrhythmias, even on a cellphone.
This is joint work with Abouzar Kaboudian and Elizabeth M. Cherry. We thank NSF for financial support.