javinoram / SpinSim.py

Python package to simulate and study spin models
https://javinoram.github.io/SpinSim.py/
MIT License
0 stars 0 forks source link

Agregar módulos de lenguajes compilados #12

Closed javinoram closed 4 months ago

javinoram commented 4 months ago

Intentar mejorar la ejecución de los cálculos de observables

javinoram commented 4 months ago

De momento encontre una forma de integrar modulos de rust. Lo siguiente es ver si rust es mas eficiente y rapido que la combinacion python+numpy

javinoram commented 4 months ago

Case test:

  1. Calcular el calor especificio usando solo las funciones de python ya programadas
  2. Calcular el calor especifico usando la mezcla de python+rust (loop de temperaturas programadas en rust) En ambos casos usar un sistema relativamente grande, 10 espines 0.5 (matrix de 1024x1024) y 2500 temperaturas entre 0.0001 a 100 kelvins.

El overhead según estimo, está en el ciclo for de la temperatura.

javinoram commented 4 months ago

https://github.com/stencillogic/astro-float (valores grande) ndarray para manejar los arreglos unidimencionales a calcular

javinoram commented 4 months ago

revisar para probar con c++ (denuevo) https://www.youtube.com/watch?v=_5T70cAXDJ0

javinoram commented 4 months ago

La separación va a ser:

  1. En Python dejar las multiplicaciones de matrices y diagonalización para obtener los elementos base (NumPy funciona bien, no veo razón de momento para mover esos cálculos a Rust).
  2. En Rust programar las funciones para calcular los observables, la idea es que solo se reciban arreglos unidimensionales de las temperaturas, energías y otras cantidades requeridas.
  3. Lo que se retorna a Python, es un arreglo unidimensional con los valores de los observables en cada una de las temperaturas ingresadas.
javinoram commented 4 months ago

El loop esta funcionando y logro hacer iteraciones en 800ms de una matriz de 5001x5001. Falta ver como mezclar ndarray con astro_float para ya empezar a construir las funciones

javinoram commented 4 months ago

mi falta de entendimiento del lenguaje, no ayuda al rapido desarrollo de la parte con rust, el ticket quedara en standby