Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

How to run SciANN on GPU #77

Open
Ali1990dashti opened this issue Jan 18, 2023 · 8 comments
Open

How to run SciANN on GPU #77

Ali1990dashti opened this issue Jan 18, 2023 · 8 comments

Comments

@Ali1990dashti
Copy link

Dear community,
I have a trivial question: how can I run SciANN on GPU?
I want to use available GPU of google colab because I have not cuda GPU in my laptop.
Let's say the following script is what I want to run on GPU, how can I modify it to be useable on google colab?

import sciann as sn
from sciann.utils.math import diff
t_ic = 50
t_left = 70
t_right = 40
x = sn.Variable('x')
t = sn.Variable('t')
T = sn.Functional('T', [t,x], 4*[20], 'tanh')
L1 = diff(T, t, order=1) - lamda/(rho* cp)*diff(T, x, order=2)
BC_letf = (x==0.)*(T - t_right)
BC_right = (x==10.)*(T - t_right)
IC = (t==0.)*(T - t_ic)
m = sn.SciModel([x, t], [L1, BC_left, BC_right, IC])
x_data, t_data = np.meshgrid(np.linspace(0, 1, 100), np.linspace(0, 60, 100))
h = m.train([x_data, t_data], 4*['zero'], learning_rate=0.002, epochs=500)

In advance, I appreciate any hint and help.
Cheers
Ali

@ehsanhaghighat
Copy link
Owner

ehsanhaghighat commented Jan 18, 2023 via email

@Ali1990dashti
Copy link
Author

@ehsanhaghighat , Thanks a lot for your help.
I tried an example on both my laptop and GPU provided by google colab.
My laptop was faster. Is it something normal? I have seen your comments here.
This is configration of the model (my model is a smple 2d trasnsiet heat equation):

Total samples: 90000 
Batch size: 64 
Total batches: 1407 

It is super slow in colab an maybe I have made some stupid mistakes: I copied the script into a notebook in colab and set the runtime type to GPU!

@ehsanhaghighat
Copy link
Owner

ehsanhaghighat commented Jan 19, 2023 via email

@Ali1990dashti
Copy link
Author

@ehsanhaghighat , thanks for your quick response. I tried with the following configuration but still nothing happens in colab and m.train() continues running:

Total samples: 90000000 
Batch size: 15000 
Total batches: 6000 

If I make it bigger, colab kicks me out of the session and say I am out of RAM :-).

@ehsanhaghighat
Copy link
Owner

ehsanhaghighat commented Jan 19, 2023 via email

@Ali1990dashti
Copy link
Author

@ehsanhaghighat, Thanks for devoting time to my problem. It is PINN and I want to solve the second order transient heat PDE in x and y directions. This is the script I am running in colab:

import sciann as sn
from sciann.utils.math import diff
import tensorflow as tf
y = sn.Variable('y')
x = sn.Variable('x')
t = sn.Variable('t')
T = sn.Functional('T', [t,x,y], 10*[20], 'tanh')
L1 = sn.rename (diff(T, t, order=1) - (0.6*1e6) / (1000*4184) * (diff(T, x, order=2) + diff(T, y, order=2)), 'PDE')
t_sim = 600
nt = 600
nx = 500
ny = 300
x_leng = 50
y_leng = 30
t_left = 100
t_right = 10
t_bottom = 10
t_top = 80
t_ic = 0
BC_left = sn.rename ((x==0.)*(T-t_left), 'BC_left') # to calculate loss coming from left BC
BC_right = sn.rename ((x==x_leng)*(T-t_right), 'BC_right') # to calculate loss coming from right BC
BC_bottom = sn.rename ((y==0.)*(T-t_bottom), 'BC_bottom') # to calculate loss coming from left BC
BC_top = sn.rename ((y==y_leng)*(T-t_top), 'BC_top') # to calculate loss coming from right BC
IC = sn.rename ((t==0.)*(T-t_ic), 'IC') # to calculate loss coming from IC
m = sn.SciModel([x, y, t], [L1, BC_left, BC_right, BC_bottom, BC_top, IC])
x_data, t_data = np.meshgrid(
    np.linspace(0, x_leng, nx), 
    np.linspace(0, t_sim, nt)
)
x_ = np.linspace(0, x_leng, nx)
y_ = np.linspace(0, y_leng, ny)
t_ = np.linspace(0, t_sim, nt)
x, y, t = np.meshgrid(x_, y_, t_, indexing='ij')
assert np.all(x[:,0,0] == x_)
assert np.all(y[0,:,0] == y_)
assert np.all(t[0,0,:] == t_)

h = m.train([x, y, t], 6*['zero'], learning_rate=0.005, epochs=100, verbose=0, batch_size=150000)

It runs for about 10 mins and then Your session crashed after using all available RAM ...

@sandhu-githhub
Copy link

hi, do you still need help with it? I may comment in case

@Ali1990dashti
Copy link
Author

Dear @sandhu-githhub , Thanks for your help. Still I need help because I could not figure it out. I very much apprecate if you let me know how I can run the code in GPU. As you see, the problem is that when I run the script in google colab it simply does not work. Sntax is here. If I reduce the batch_size it takes a long time and nothing happens and if I increase it I will face the RAM error.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

3 participants