Akademik araştırmalar, anlaşılır dil

Verianla | Akademik Araştırmalardan Türkçe Ekonomi ve Bilim İçerikleri

27 Eylül 2026, Pazar
VERİANLABağımsız bilim yayıncılığı
Menüyü aç veya kapat
...
Home / Uygulamalı Bilimler / MATLAB / Atom–İyon Dinamikleri için GPU Hızlandırmalı MATLAB Yazılımı
MATLAB

Atom–İyon Dinamikleri için GPU Hızlandırmalı MATLAB Yazılımı

Bu araştırma, düşük yoğunluklu bir atom bulutu içindeki tuzaklanmış iyonla gerçekleşen klasik atom–iyon etkileşimlerini MATLAB üzerinde yüksek paralellikle simüle etmek için geliştirilen ode45gpu ve atomiongpu.m yazılımlarını incelemektedir.

24/08/2026  Veri Anla 37 görüntüleme
Atom–İyon Dinamikleri için GPU Hızlandırmalı MATLAB Yazılımı

Bu araştırma, düşük yoğunluklu bir atom bulutu içindeki tuzaklanmış iyonla gerçekleşen klasik atom–iyon etkileşimlerini MATLAB üzerinde yüksek paralellikle simüle etmek için geliştirilen ode45gpu ve atomiongpu.m yazılımlarını incelemektedir. Sistem, Newton hareket denklemleri 12 bileşenli bir durum vektörüne dönüştürülerek modellenmekte; dördüncü/beşinci mertebe adaptif Runge–Kutta integrasyonu gerçekleştirilmekte ve birbirinden bağımsız başlangıç koşulları MATLAB'ın gpuArray ve arrayfun mekanizmalarıyla GPU üzerinde paralelleştirilmektedir. Yüklenen preprint sürümündeki benchmark'a göre özelleştirilmiş ode45gpu, tek CPU çekirdeğinde referans ode45 kullanımından 22 kata kadar hızlı çalışmış; GPU testlerinde yaklaşık 10.000 yörüngeye kadar geniş bir paralellik bölgesi gözlenmiş ve örnek bir 8-GPU çalıştırmasında 10 milyondan fazla yörünge 15 saatin altında tamamlanmıştır. Temel sınır, bunun klasik ve belirli atom–iyon etkileşim modeline göre özelleştirilmiş bir simülasyon olmasıdır; genel amaçlı ode45'in her problemde GPU üzerinde doğrudan yerine geçen evrensel bir çözücü olarak gösterilmemiştir.

Çalışmanın çözmeye çalıştığı problem nedir?

Soğuk ve ultrasoğuk atom–iyon fiziğinde bir iyon, Paul tuzağı gibi elektromanyetik bir tuzak içinde tutulurken serbest bir atom iyonla etkileşebilir. Tek bir çarpışmanın klasik hareket denklemleri görece küçük bir sistem oluşturmasına rağmen gerçek problem istatistikseldir: atomun başlangıç yönü, hızı ve diğer başlangıç koşulları tam olarak bilinmediği için tek bir yörünge bütün sistemi temsil etmez.

Bu nedenle binlerce, hatta milyonlarca farklı başlangıç koşulunun ayrı ayrı simüle edilmesi gerekir. Her yörünge diğerinden bağımsız olduğu için problem, paralel hesaplama açısından son derece elverişlidir. Çalışmanın temel fikri de budur: birbirini beklemek zorunda olmayan çok sayıda küçük ODE problemini GPU'nun çok sayıdaki işlem birimine dağıtmak.

Neden yalnız iki parçacık simüle ediliyor?

Kaynak, düşük yoğunluklu tampon gaz koşullarında iyonun aynı anda esas olarak tek bir atomla etkileştiğini varsaymaktadır. Böylece sistem yalnız bir atom ve bir iyondan oluşan iki parçacıklı klasik modele indirgenebilir.

Bu sadeleştirme GPU açısından avantajlıdır. Her yörünge az miktarda bellek kullanır ve yörüngelerin tamamının sürekli bellekte tutulması zorunlu değildir. Hesaplamanın büyük kısmı birbirinden bağımsız küçük sayısal integrasyonlardan oluşur.

Kaynak çalışmadaki fiziksel düzen esas alınarak Verianla için yeniden çizilmiş öğretici şema. Atom uzak bir küresel başlangıç yüzeyinden, tuzak merkezindeki iyona doğru başlatılır.

Benchmark sisteminde hangi atom ve iyon kullanılmıştır?

Benchmark için çalışma, merkezdeki Paul tuzağında başlangıçta hareketsiz bulunan bir Yb+ iyonu ile yaklaşık 5000 Bohr yarıçapı uzaktan başlatılan bir Rb atomunu kullanmaktadır. Kullanıcı arayüzündeki örnek ayarlarda bunlar özellikle 171Yb+ ve 87Rb olarak verilmektedir.

Atomun benchmark başlangıç hızı \(T=1\,\mu\mathrm{K}\) sıcaklığına göre:

\[ v_0=\sqrt{\frac{3k_BT}{m_a}} \]

ile belirlenir ve başlangıçta iyona doğru yönlendirilir.

Atom–iyon etkileşimi hangi potansiyelle modellenmiştir?

Benchmark'ta atom–iyon etkileşimi uzun menzilli çekici ve kısa menzilli itici terimin birleşimiyle ifade edilir:

\[ V_{ai}(r)=-\frac{C_4}{r^4}+\frac{C_8}{r^8}. \]

Burada ilk terim uzun menzildeki yük–indüklenmiş dipol etkileşimini temsil ederken, ikinci terim atom ile iyon çok yaklaştığında kısa menzilli itici davranışı modellemektedir.

atomiongpu.m yalnız bu özel 4–8 biçimine kilitli değildir. Kullanıcı arayüzü daha genel:

\[ V(r)=-\frac{C_n}{r^n}+\frac{C_m}{r^m} \]

ifadesini desteklemektedir.

Paul tuzağı Hamiltonyen'e nasıl giriyor?

Benchmark sisteminin Hamiltonyen'i atom ve iyonun kinetik enerjilerini, atom–iyon etkileşimini ve iyon üzerindeki zamana bağlı Paul tuzağı potansiyelini birlikte içerir:

\[ H= \frac{1}{2}m_av_a^2+ \frac{1}{2}m_iv_i^2 -\frac{C_4}{r_{ai}^4} +\frac{C_8}{r_{ai}^8} + \sum_{j=1}^{3} (a_j+2q_j\cos\Omega_{\mathrm{rf}}t) \frac{m_{\mathrm{ion}}\Omega_{\mathrm{rf}}^2}{8} r_j^2. \]

\(a_j\) ve \(q_j\) tuzak parametreleri, \(\Omega_{\mathrm{rf}}\) ise radyo-frekans tuzak sürme frekansıdır. Zamana bağlı tuzak nedeniyle sistemin kütle merkezi ile göreli hareketi basit biçimde birbirinden ayrılamaz.

Neden durum vektörü 12 boyutludur?

Bir atom ve bir iyonun her biri üç uzaysal koordinat ve üç hız bileşeni taşır. Dolayısıyla:

Durum değişkenleriFiziksel anlam
\(y_1,y_2,y_3\)İyonun x, y ve z konumları
\(y_4,y_5,y_6\)İyonun x, y ve z hız bileşenleri
\(y_7,y_8,y_9\)Atomun x, y ve z konumları
\(y_{10},y_{11},y_{12}\)Atomun x, y ve z hız bileşenleri

Toplamda 12 değişkenli bir durum vektörü oluşur ve hareket:

\[ \dot{\mathbf y}=f(t,\mathbf y) \]

biçiminde birinci mertebe adi diferansiyel denklem sistemine dönüştürülür.

Atom–iyon uzaklığı nasıl hesaplanıyor?

\[ r= \sqrt{ (y_1-y_7)^2+ (y_2-y_8)^2+ (y_3-y_9)^2 }. \]

Benchmark etkileşim potansiyelinin türevi ise:

\[ \frac{dV}{dr} ============= ## \frac{4C_4}{r^5} \frac{8C_8}{r^9}. \]

Bu türev atom ve iyonun karşılıklı ivmelerini hesaplamak için kullanılır. İyon denklemlerine buna ek olarak Paul tuzağının zamana bağlı kuvvet terimleri eklenmektedir.

Başlangıç konumu neden küre üzerinden seçiliyor?

Atom, iyonun merkezde olduğu \(r_0\) yarıçaplı bir küre üzerinde başlatılır. Başlangıç koordinatları küresel açılar \(\theta\) ve \(\phi\) üzerinden:

\[ x=r_0\sin\theta\cos\phi, ] [ y=r_0\sin\theta\sin\phi, ] [ z=r_0\cos\theta \]

şeklindedir. Head-on durumda hız vektörü bu konum vektörünün ters yönünde seçilir; yani atom doğrudan merkeze doğru hareket eder.

Neden her θ değerini eşit aralıkla seçmek doğru değildir?

Kürenin yüzey alanı kutuplara yaklaşıldıkça farklı geometrik ağırlığa sahiptir. Bu nedenle \(\theta\)'yı yalnız doğrusal aralıklarla örneklemek küre üzerinde eşit alan örneklemesi oluşturmaz. Çalışmada eşit katı açı örneklemesi için:

\[ \theta=\arccos(1-2u) \]

dönüşümü kullanılır. Burada \(u\), seçilen \(\theta\) sınırlarına karşılık gelen uygun aralıkta eşit aralıklı veya rastgele seçilmektedir. Böylece her \((\theta,\phi)\) başlangıç koşulu yaklaşık eşit yüzey alanını temsil eder.

Yörüngeler neden bazen çok karmaşık hale geliyor?

Bazı başlangıç koşullarında atom iyonla yalnız kısa süre etkileşip geri saçılır. Bazılarında ise atom ve iyon tekrar tekrar yakınlaşarak geçici olarak birbirine bağlı, uzun ömürlü bir atom–iyon kompleksi meydana getirebilir.

Çalışmanın örnek yörüngesi bu ikinci davranışa sahiptir. \(\theta\approx1{,}02\) ve \(\phi\approx0{,}22\) civarındaki özel başlangıç koşulu, yoğun ve düzensiz bir yörünge üretmektedir. Yazarlar bunu ODE sisteminin güçlü doğrusal olmayan ve kaotik karakterinin bir örneği olarak kullanmıştır.

MATLAB'ın standart ode45 çözücüsü burada nasıl çalışıyor?

ode45, Dormand–Prince çiftine dayalı dördüncü/beşinci mertebe adaptif zaman adımlı Runge–Kutta yöntemidir. Kullanıcı:

  • kuvvet fonksiyonunu \(f(t,y)\),
  • başlangıç koşullarını,
  • simülasyon zamanını,
  • mutlak toleransı,
  • bağıl toleransı

çözücüye verir.

Çözücü her adımda yerel hata kestirimi yapar. Hata toleranstan büyükse zaman adımı küçültülür; hata kabul edilebilir düzeydeyse adım korunabilir veya büyütülebilir.

Sadece MATLAB kodunu yeniden yazmak nasıl yaklaşık üç kat hız kazandırdı?

Çalışmanın dikkat çekici bulgularından biri, GPU'ya geçmeden önce bile kuvvet fonksiyonunun yazım biçiminin büyük performans farkı yaratmasıdır.

İlk kuvvet fonksiyonunda MATLAB'ın:

y(4:6)

gibi bir ifade için geçici üç elemanlı bir vektör oluşturduğu, ardından elemanların ayrı ayrı kullanıldığı belirtilmektedir. Yazarlar bunu:

y(4), y(5), y(6)

gibi skaler erişimlere dönüştürmüştür.

Kaynağın benchmark'ında 2500 yörünge, tek Intel Haswell CPU çekirdeğinde ilk kuvvet fonksiyonuyla ode45 kullanıldığında 10 saatten fazla sürerken, optimize edilmiş kuvvet fonksiyonuyla aynı ode45 hesabı 3,5 saatin altına düşmüştür. Yazarlar bunu yaklaşık üç kat hızlanma olarak yorumlamaktadır.

Bu sonuç MATLAB öğrenen biri için önemli bir noktayı gösterir: aynı matematiksel denklem, farklı MATLAB kodlama biçimleriyle çok farklı çalışma sürelerine sahip olabilir.

ode45gpu nedir?

ode45gpu, çalışmanın yazarlarının Dormand–Prince dördüncü/beşinci mertebe adaptif Runge–Kutta algoritmasını yeniden uygulayarak oluşturduğu, tek dosyalı ve atom–iyon problemi için özelleştirilebilir MATLAB fonksiyonudur.

Standart ode45 ile temel algoritmik mantığı aynıdır; ancak uygulama ve çıktı politikası farklıdır.

ode45gpu varsayılan olarak bütün yörüngeyi saklamak yerine:

  • son zamanı,
  • 12 son durum değişkenini,
  • ve kullanıcı tarafından seçilen düşük bellekli skaler gözlenebilirleri

döndürür.

Ayrıca tek simülasyonun olağanüstü uzun sürmesini engellemek için 1.000.000 zaman adımı sonrasında döngüyü sonlandıran güvenlik koşulu bulunmaktadır.

Neden bütün yörüngeyi saklamamak büyük avantajdır?

Milyonlarca yörüngenin her zaman adımındaki 12 durum değişkenini saklamak bellek ihtiyacını dramatik biçimde büyütürdü. Bunun yerine çalışma, birçok gözlenebiliri integrasyon sırasında “on the fly” hesaplamakta ve geçmiş adımların tamamını bellekte tutmamaktadır.

Örneğin:

  • iyonun son kinetik enerjisi,
  • kompleks ömrü,
  • hesaplanan zaman adımı sayısı

yalnız gerekli bilgiler kullanılarak kaydedilebilir.

Neden ode45gpu içinde MATLAB vektörleri parçalanmıştır?

Çalışmanın GPU uygulamasındaki kritik programlama kararı budur. MATLAB'ın GPU üzerinde arrayfun aracılığıyla çalıştırdığı fonksiyonlarda kullanılan kod kısıtları nedeniyle yazarlar 12 elemanlı durum vektörünü ayrı skaler değişkenlere dönüştürmüştür.

Örneğin geleneksel olarak:

f(1:3)=y(4:6)

şeklinde ifade edilebilecek işlem mantıksal olarak üç ayrı skaler atamaya açılmıştır.

Bu nedenle ode45gpu genel MATLAB ODE kodundan daha uzun görünse de GPU yürütme modeline daha uygun bir yapı kazanmıştır.

Kuvvet fonksiyonu neden yedi kez bulunuyor?

Dormand–Prince yöntemi her zaman adımında birden fazla ara eğim değerlendirmesi yapar. Çalışmanın ode45gpu uygulamasında kuvvet fonksiyonunun skalerleştirilmiş ifadesi yedi ayrı yerde bulunmaktadır ve her aşamada farklı ara durum değişkenleri kullanılır.

Bu, kaynak kodu açısından tekrar gibi görünse de GPU için fonksiyon çağrısı ve vektör oluşturma yükünü azaltmaya yönelik özelleştirilmiş uygulamanın bir parçasıdır.

Kaynak çalışmanın gpuArray–arrayfun–ode45gpu–gather yapısı temel alınarak Verianla için yeniden çizilmiş MATLAB/GPU veri akışı.

Verianla Live: ode45gpu ile GPU üzerinde paralel hesaplama

Bu süreç, çalışmanın akış şeması ve MATLAB kod ekranlarında verilen gerçek işlem sırasını özetlemektedir.

AşamaMATLAB işlemiBilimsel işlevKaynak
1. Başlangıç örneklemesiθ, φ ve 12 başlangıç değişkeni oluşturulurBirbirinden bağımsız atom–iyon yörüngeleri tanımlanırŞekil 7 ve Bölüm 3.3
2. GPU belleğine taşımagpuArrayBaşlangıç koşulları, sabitler ve toleranslar GPU üzerinde tutulurŞekil 7
3. Paralel yürütmearrayfun(@ode45gpu,...)Her başlangıç koşulu için adaptif Runge–Kutta integrasyonu çalışırŞekil 7
4. Düşük bellekli çıktıSon durumlar + skaler gözlenebilirlerBütün zaman geçmişini saklamadan milyonlarca yörünge işlenebilirBölüm 3.2–3.3
5. Sonuç aktarımıgatherGPU sonuçları CPU tarafında analiz edilmek üzere alınırŞekil 7
6. İstatistik ve görselleştirmeatomiongpu.mOlasılık, heatmap, CSV ve seçilmiş tam yörüngeler üretilirBölüm 4
 

gpuArray burada tam olarak ne yapıyor?

Her başlangıç koşulu için bir matris elemanı oluşturulur. Örneğin atomun başlangıç x koordinatlarının tamamı bir matris halinde hesaplanıp GPU belleğine aktarılır. Aynı işlem diğer 11 başlangıç değişkeni için de yapılır.

Kuvvet sabitleri ve hata toleransları değişmiyorsa bile arrayfun çağrısıyla uyumlu olmak için başlangıç matrisleriyle aynı boyutta, her elemanı aynı sabit değeri taşıyan GPU dizileri oluşturulur.

arrayfun burada nasıl paralellik sağlıyor?

arrayfun, karşılık gelen GPU dizi elemanlarını bağımsız birer fonksiyon çağrısına dönüştürür. Bu çalışmada her indeks bir yörüngeyi temsil eder. Dolayısıyla GPU aynı anda çok sayıda:

\[ \dot y=f(t,y) \]

problemini farklı başlangıç koşullarıyla çözebilir.

gather neden en sonunda kullanılıyor?

ode45gpu çıktıları GPU belleğinde gpuArray olarak kalır. Çalışma, son analiz ve veri işleme aşamasını CPU tarafında yapmayı tercih ettiği için sonuçlar:

GPU → gather → CPU belleği

zinciriyle geri alınmaktadır.

CPU'da ode45gpu gerçekten neden hızlı?

Yüklenen v1 benchmark'ında, 2500 yörünge için ode45gpu tek CPU çekirdeğinde, yazarların referans olarak kullandığı ode45 + f(t,y) uygulamasından 22 kat hızlı çalışmıştır. Çalışma ayrıca bu hız oranının 28 bağımsız CPU çekirdeğine kadar paralelleştirmede korunduğunu bildirmektedir.

Bu sonucu “MATLAB ode45 her problemde 22 kat yavaştır” biçiminde okumak doğru değildir. Benchmark, belirli atom–iyon problemi, belirli kuvvet fonksiyonu ve bu özel çıktı politikasına aittir. Nitekim çalışmanın daha sonraki hakemli sürümünde CPU hızlanma değeri yeniden değerlendirilmiştir.

GPU benchmark'ında hangi donanımlar kullanıldı?

Çalışma üç NVIDIA Tesla GPU üzerinde test yapmıştır:

GPUBellek
NVIDIA Tesla K8024 GB
NVIDIA Tesla P10016 GB
NVIDIA Tesla V10032 GB

Her testte aynı özel yörüngenin bağımsız kopyalarının sayısı 1'den 1.000.000'a kadar artırılmıştır.

Yaklaşık 10.000 yörünge eşiği ne anlama geliyor?

Üç GPU'da da yaklaşık 10.000 yörünge civarında belirgin bir geçiş görülmüştür. Bu sayının altında yörünge sayısı artırıldığında toplam çalışma süresi yaklaşık sabit kalmaktadır. Yazarların yorumuna göre bu bölge, GPU'nun yeni yörüngeleri mevcut paralel işlem kapasitesi içine yerleştirebildiğini gösterir.

Eşik aşıldıktan sonra çalışma süresi yörünge sayısıyla yaklaşık doğrusal artmaya başlar. GPU'nun eşzamanlı işlem kapasitesi dolmuştur ve ek yörüngeler yeni çalışma dalgaları halinde işlenmektedir.

Aynı yörüngeyi kopyalamak benchmark'ı yanıltıyor olabilir mi?

Yazarlar bunu ayrıca test etmiştir. Tesla K80 üzerinde aynı yörüngenin çok sayıda kopyası ile küre yüzeyinden eşit katı açıyla örneklenmiş farklı başlangıç koşulları karşılaştırılmıştır.

Farklı yörüngelerde özellikle küçük örnek sayılarında çalışma süresinde daha fazla dalgalanma görülmüştür; çünkü bazı başlangıç koşulları daha karmaşık ve uzun dinamikler üretmektedir. Yaklaşık paralellik eşiğinden sonra iki durumda da çalışma süresi yörünge sayısıyla yaklaşık doğrusal hale gelmiştir.

atomiongpu.m neden geliştirildi?

ode45gpu'yu doğrudan kullanmak, kuvvet fonksiyonunu ve GPU girişlerini ayrıntılı biçimde düzenlemeyi gerektirir. Yazarlar bu süreci kolaylaştırmak için atomiongpu.m adlı bir üst seviye kullanıcı script'i geliştirmiştir.

Kullanıcı dosyanın üst bölümündeki parametreleri değiştirir; script başlangıç koşullarını oluşturur, paralelleştirmeyi düzenler, ode45gpu'yu çalıştırır, sonuçları toplar, gözlenebilirleri işler ve dosyaları üretir.

atomiongpu.m ile hangi atom ve iyonlar değiştirilebilir?

Atom ve iyon kütleleri atomik birimlerle kullanıcı tarafından girilebilir. Örnek ayarlarda:

  • 171Yb+ iyonu,
  • 87Rb atomu

kullanılmıştır.

Atom ve iyon sıcaklıkları da Kelvin cinsinden ayrı ayrı belirlenebilir.

“head-on” ve “thermal” çarpışma modları arasındaki fark nedir?

head-on: Atom sabit hızla doğrudan orijine/iyona doğru gönderilir. İyon başlangıçta orijinde hareketsizdir. Bu modda iyon sıcaklığı değişkeni kullanılmaz.

thermal: Atom ve iyon hız bileşenleri sıcaklıklarına karşılık gelen normal dağılımlardan örneklenir. İyonun tuzak içindeki başlangıç koordinatları da sıcaklığa ve seküler tuzak frekansına bağlı normal dağılımdan seçilir. Kaynak bu modu atomların oluşturduğu termal banyodaki iyon için daha gerçekçi senaryo olarak tanımlamaktadır.

Potansiyel için hangi giriş biçimleri destekleniyor?

potential seçeneğiKullanıcının verdiği bilgilerKodun hesapladığı
CnCm\(n,m,C_n,C_m\)Katsayılar doğrudan kullanılır
CnDe\(n,m,C_n,D_e\)\(C_m\) analitik olarak hesaplanır
DeRe\(n,m,D_e,R_e\)\(C_n\) ve \(C_m\) analitik olarak hesaplanır

Bütün durumlarda kullanılan genel potansiyel:

\[ V(r)=-\frac{C_n}{r^n}+\frac{C_m}{r^m} \]

biçiminde kalır.

İyon tuzaksız, harmonik tuzakta veya Paul tuzağında çalıştırılabilir mi?

Evet. Kaynak üç yapı tarif etmektedir.

Tuzaksız sistem

Tuzak parametreleri sıfıra ayarlanır.

Harmonik tuzak

\(q_x=q_y=q_z=0\) seçilir ve uygun \(a_x,a_y,a_z\) parametreleri harmonik frekanslara göre girilir.

Paul tuzağı

Kullanıcı \(a_x,a_y,a_z,q_x,q_y,q_z\) ve \(\Omega_{\mathrm{rf}}\) değerlerini gerçek Paul tuzağı parametrelerine göre verir.

Simülasyon ne zaman duruyor?

Her yörünge iki durma koşulundan hangisi önce gerçekleşirse o anda sonlandırılır:

  • simülasyon zamanı tmax'a ulaştığında,
  • veya zaman adımı sayısı maxsteps'e ulaştığında.

Kaynak örneğinde tmax yaklaşık 1 ms ve maxsteps 1.000.000'dur.

Kaç yörünge çalıştırılabilir?

Kaynağa göre ntrajectories yaklaşık 10.000.000 düzeyine kadar ayarlanabilir. Yazarlar yaklaşık 25.000.000 yörüngeyi denediklerinde bellek sorunları gözlemlediklerini belirtmektedir.

Buradaki sınır evrensel değildir; kullanılan GPU belleği, çıktı seçenekleri ve diğer donanım koşullarına bağlıdır.

ntheta ve nphi ne işe yarıyor?

Yörünge başlangıçları iki boyutlu bir \(n_\theta\times n_\phi\) matris yapısında organize edilir. nanglesauto="yes" olduğunda program bu iki değeri yörünge sayısının kareköküne yakın biçimde otomatik seçer.

Manuel modda:

\[ n_\theta n_\phi=n_{\mathrm{trajectories}} \]

koşulu uygulanır.

CPU ve GPU seçimi nasıl yapılıyor?

processor değişkeni:

  • CPU veya
  • GPU

olarak ayarlanabilir.

ncores, kullanılacak bağımsız CPU süreçlerini belirler. GPU modunda her süreç kendi GPU'sunda çalıştırılabildiğinden kaynak, ncores değerinin kullanılabilir GPU sayısını aşmaması gerektiğini belirtmektedir.

Tüm yörüngeleri saklamıyorsa belirli bir yörüngeyi nasıl çiziyor?

Program önce düşük bellekli toplu hesaplamayı yapar. Daha sonra kullanıcı isterse belirli bir başlangıç koşulunu yeniden çalıştırarak tam yörüngeyi kaydeder.

İki özel seçenek vardır:

  • longestlived: en uzun kompleks ömrünü veren başlangıç koşulunu bulur ve tam yörüngeyi tekrar hesaplar.
  • custom: kullanıcının girdiği 12 bileşenli özel başlangıç koşulunu tam yörünge olarak hesaplar.

Tam yörünge dört biçimde görselleştirilir:

  • atom–iyon uzaklığına karşı zaman,
  • xy düzlemi yörünge izdüşümü,
  • xz izdüşümü,
  • yz izdüşümü.

Hangi gözlenebilirler kaydedilebiliyor?

Çıktı adıKaynakta verilen anlamı
angleAtomun saçılma açısı
bouncesYörünge boyunca atom ve iyon arasındaki kısa menzilli çarpışma sayısı
lifetimeİlk ve son bounce arasındaki atom–iyon kompleks ömrü
positionİlk bounce sırasında iyonun orijinden uzaklığı
transferAtom tarafından aktarılan momentum
distSon atom–iyon uzaklığı
nstepsSimülasyonda kullanılan zaman adımı sayısı
KEİyonun son kinetik enerjisi

Sonuç dosyaları nasıl yönetiliyor?

Kullanıcı üç temel depolama davranışını kontrol edebilir:

  • MATLAB workspace'in work.mat olarak kaydedilmesi,
  • bütün gözlenebilirlerin CSV dosyalarının kaydedilmesi,
  • yalnız seçilen tek bir gözlenebilirin CSV dosyasının kaydedilmesi.

Program ayrıca çalışmaya başlamadan önce yaklaşık depolama gereksinimini kullanıcıya bildirir. Böylece kullanıcının disk alanı yetersizse simülasyon başlamadan çıktı seçeneklerini azaltması mümkündür.

Isı haritası neyi gösteriyor?

Kaynak, her gözlenebiliri atomun başlangıç küresel açıları \(\theta\) ve \(\phi\)'nin fonksiyonu olarak ısı haritasına dönüştürebilmektedir. Saçılma açısı için verilen örnekte bazı başlangıç bölgeleri basit geri saçılma üretirken başka bölgeler son derece karmaşık örüntüler oluşturmaktadır.

Yazarlar bu desenlerde görülen fraktal yapıyı sistemin kaotik saçılma dinamikleriyle ilişkilendirmektedir.

Kaynak çalışmanın çıktı mantığı temel alınarak Verianla için yeniden çizildi. Toplu simülasyonda tam zaman geçmişi yerine düşük bellekli gözlenebilirler tutulur; özel yörüngeler gerektiğinde yeniden hesaplanır.

Örnek çalıştırmada ne oldu?

Makaledeki örnek konsol çıktısında program 10.004.569 atom–iyon yörüngesi için hesaplama başlatmaktadır. Hesap sekiz GPU kullanılarak yürütülmüş ve tamamlanma süresi 52.848,874 saniye olarak raporlanmıştır; çalışma bunu 10 milyondan fazla yörüngenin 15 saatin altında tamamlanması olarak özetlemektedir.

Aynı örnek çalıştırmada programın hesapladığı kompleks oluşma olasılığı %59,87 olarak yazdırılmıştır. Bu değer çalışmanın bütün atom–iyon sistemleri için evrensel kompleks olasılığı değildir; yalnız gösterilen parametreler ve başlangıç koşulu örneklemesi için elde edilen simülasyon çıktısıdır.

CPU ve GPU neden aynı kaotik yörüngede farklı sonuç verebilir?

Çalışmanın MATLAB açısından en öğretici bölümlerinden biri budur. Aynı başlangıç koşulları ve aynı ODE algoritması kullanılmasına rağmen GPU ile CPU'da hesaplanan çok kaotik bir yörüngenin bounce sayısı ve kompleks ömrü farklı çıkabilmiştir.

Yazarlar bunu CPU ve GPU mimarilerinin kayan noktalı işlemleri farklı yuvarlama sıralarıyla gerçekleştirebilmesine bağlamaktadır. Kaotik sistemlerde başlangıç veya sayısal hesaplamadaki son derece küçük farklar zamanla büyüyebilir.

Örnek konsol çıktısındaki en uzun ömürlü yörüngede GPU hesabı 3 bounce ve 987,1 µs, CPU üzerindeki ode45gpu hesabı ise 2 bounce ve 954,9 µs vermektedir.

Bu durum tek başına GPU hesabının yanlış olduğu anlamına gelmez. Program doğrulama amacıyla aynı özel yörüngeyi CPU üzerinde hem ode45gpu hem MATLAB'ın standart ode45 çözücüsüyle yeniden çalıştırmakta ve son durumların uyuşup uyuşmadığını kontrol etmektedir.

Bu bize sayısal simülasyon hakkında ne öğretiyor?

Bir simülasyon kodunun aynı diferansiyel denklemi çözmesi, her donanımda her ara noktada bit düzeyinde aynı yörüngeyi üretmesini garanti etmez. Özellikle kaotik sistemlerde:

  • kayan noktalı yuvarlama,
  • işlem sıralaması,
  • CPU ve GPU mimari farkları

gözlenebilir yörüngeyi zaman içinde ayırabilir. Bu nedenle çalışma doğrulamayı yalnız tek bir kaotik yörüngenin mikro ayrıntıları üzerinden değil, çözücü tutarlılığı ve istatistiksel çıktılar üzerinden ele almaktadır.

MATLAB öğrenen biri bu çalışmadan hangi programlama derslerini çıkarabilir?

Birinci ders: MATLAB'da performans yalnız algoritmanın matematiksel karmaşıklığı değildir; dizi oluşturma, indeksleme ve bellek davranışı da hesap süresini ciddi biçimde etkileyebilir.

İkinci ders: GPU'ya geçmeden önce CPU kodunu optimize etmek önemlidir. Kaynakta yalnız kuvvet fonksiyonunun yeniden yazılması yaklaşık üç kat hız kazandırmıştır.

Üçüncü ders: GPU'ya uygun kod her zaman CPU için yazılan en doğal MATLAB koduyla aynı biçimde değildir. Vektörler burada GPU arrayfun gereksinimleri nedeniyle skaler değişkenlere dönüştürülmüştür.

Dördüncü ders: Milyonlarca simülasyonda bütün ara verileri saklamak yerine yalnız bilimsel olarak gerekli özet değişkenleri hesaplamak çok büyük bellek avantajı sağlayabilir.

Beşinci ders: Paralel işlem ancak bağımsız iş birimleri varsa verimlidir. Bu çalışmada her atom–iyon yörüngesi diğerlerinden bağımsız olduğu için GPU paralelliği doğal biçimde uygulanabilmektedir.

Altıncı ders: Sayısal doğrulama gereklidir. Hız kazanımı tek başına yeterli değildir; sonuçların güvenilirliği standart çözücüyle karşılaştırılmalıdır.

Çalışmanın desteklediği sonuçlar

  • Atom–iyon klasik yörüngeleri MATLAB üzerinde bağımsız başlangıç koşulları üzerinden kitlesel biçimde paralelleştirilebilir.
  • Kaynak v1 benchmark'ında kuvvet fonksiyonunun yeniden yazılması tek başına yaklaşık üç kat CPU hızlanması sağlamıştır.
  • Yüklenen preprint benchmark'ında özelleştirilmiş ode45gpu, belirli referans ode45 kullanımına göre tek CPU çekirdeğinde 22 kata kadar hızlıdır.
  • GPU üzerinde yaklaşık 10.000 yörüngeye kadar güçlü eşzamanlılık bölgesi gözlenmiştir.
  • atomiongpu.m, yaklaşık on milyon yörünge ölçeğine kadar giriş hazırlama, paralel hesap, istatistik, CSV ve görselleştirme işlerini otomatikleştirebilir.
  • Saçılma açısı ve benzeri gözlenebilirlerin başlangıç açılarına göre ısı haritaları kaotik ve fraktal yapılar gösterebilir.

Çalışmanın desteklemediği veya test etmediği sonuçlar

  • Bu çalışma kuantum mekanik atom–iyon dinamiğinin tam çözümü değildir; klasik hareket denklemlerini kullanmaktadır.
  • ode45gpu'nun bütün ODE problemlerinde MATLAB ode45'ten 22 kat hızlı olduğu gösterilmemiştir.
  • GPU ve CPU'nun her kaotik yörüngede birebir aynı zaman geçmişini üretmesi beklenmemektedir.
  • Yaklaşık on milyon yörünge sınırı bütün bilgisayarlar için sabit bir kapasite değildir; bellek ve donanıma bağlıdır.
  • Çalışma laboratuvar deneyi gerçekleştirmemiş ve simülasyon sonuçlarını yeni bir deneysel veri setiyle doğrudan doğrulamamıştır.
  • Yüklenen v1'deki 22× benchmark değeri daha sonraki hakemli yayın sürümünün nihai performans sonucu olarak kullanılmamalıdır.

Çalışmanın Yöntemi ve Bulguları

Simülasyon türü

Araştırma klasik moleküler dinamik simülasyonudur. Atom ve iyon noktasal klasik parçacıklar olarak hareket eder; iç serbestlik dereceleri hesaba katılmaz. Düşük yoğunluk varsayımı nedeniyle tek bir iyonun aynı anda bir atomla etkileştiği iki parçacıklı dinamik çözülür.

Benchmark fiziksel parametreleri

ParametreKaynak benchmark'ı
AtomRb; kullanıcı arayüzü örneğinde 87Rb
İyonYb+; kullanıcı arayüzü örneğinde 171Yb+
Başlangıç atom–iyon uzaklığı5000 \(a_0\)
Atom sıcaklığı1 µK
İyon başlangıcıPaul tuzağı merkezinde, benchmark'ta başlangıçta hareketsiz
Benchmark simülasyon süresi1 ms
ODE durum boyutu12
ODE yöntemiDormand–Prince temelli adaptif 4./5. mertebe Runge–Kutta

Başlangıç koşulları

\[ \mathbf y_0= ( 0,0,0,0,0,0, r_0\sin\theta\cos\phi, r_0\sin\theta\sin\phi, r_0\cos\theta, -v_0\sin\theta\cos\phi, -v_0\sin\theta\sin\phi, -v_0\cos\theta ). \]

İlk altı bileşen benchmark'ta iyonun orijinde ve hareketsiz olduğunu; sonraki üç bileşen atom konumunu, son üç bileşen ise atomun merkeze yönelmiş başlangıç hızını verir.

CPU kuvvet fonksiyonu optimizasyonu

Hesap2500 yörünge için kaynakta raporlanan sonuç
ode45 + ilk \(f(t,y)\) yazımı10 saatten fazla
ode45 + optimize edilmiş \(g(t,y)\)3,5 saatin altında
YorumYalnız kuvvet fonksiyonunun yeniden yazılması yaklaşık 3× hızlanma

ode45gpu CPU benchmark'ı

2500 yörüngede, yüklenen v1'e göre ode45gpu tek CPU çekirdeğinde referans ode45 + f(t,y) çalıştırmasından 22× hızlıdır. Paralellik 28 CPU çekirdeğine kadar artırıldığında kaynak, bu hız oranının yaklaşık korunduğunu bildirmektedir.

Bu karşılaştırmanın preprint sürümüne özgü olduğu özellikle korunmalıdır; 2026'daki hakemli sürüm benchmark metodolojisini ve performans rakamlarını değiştirmiştir.

GPU ölçekleme deneyi

NVIDIA Tesla K80 24 GB, P100 16 GB ve V100 32 GB üzerinde:

\[ n=1,2,5,10,20,\ldots,1.000.000 \]

yörünge test edilmiştir.

Yaklaşık \(n\sim10^4\) yörüngeye kadar çalışma süresinin büyük ölçüde sabit olması GPU paralelliğinin henüz doygunluğa ulaşmadığını; daha sonra sürenin yaklaşık \(n\) ile orantılı büyümesi işlem kapasitesinin dolduğunu göstermektedir.

Gerçekçi başlangıç koşulu testi

K80 üzerinde aynı yörüngenin kopyalarıyla yapılan benchmark'a ek olarak, ilk oktant üzerindeki farklı \((\theta,\phi)\) başlangıç koşullarıyla da test yapılmıştır. Küçük \(n\) değerlerinde yörünge karmaşıklığı nedeniyle çalışma süresinde daha fazla dalgalanma görülse de yüksek yörünge sayısında iki test de yaklaşık doğrusal ölçekleme göstermiştir.

atomiongpu.m örnek çalıştırma sonucu

ÖlçütÖrnek çıktı
Yörünge sayısı10.004.569
Kullanılan GPU sayısı8
Toplam çalışma süresi52.848,874 saniye
Kaynağın zaman yorumu10 milyondan fazla yörünge, 15 saatin altında
Kompleks oluşum olasılığı%59,87

Bu tablo tek bir örnek parametre kümesinin çıktısıdır. %59,87 değeri genel atom–iyon kompleks oluşum oranı olarak kullanılmamalıdır.

Kaotik yörüngede GPU–CPU farkı

HesapBounce sayısıKompleks ömrü
ode45gpu — GPU3987,1 µs
ode45gpu — CPU2954,9 µs

Kaynak bu farklılığı kayan noktalı hesapların GPU ve CPU mimarilerinde farklı yuvarlama davranışlarına sahip olması ve dinamiğin kaotik olmasıyla açıklamaktadır. Kod, ayrıca CPU üzerindeki ode45gpu çıktısını MATLAB'ın ode45 sonucu ile karşılaştırarak son koşulların eşleşmesini doğrulamaktadır.

Programın bilimsel çıktıları

atomiongpu.m toplu simülasyonun ardından:

  • kompleks oluşum olasılığını,
  • saçılma açısı dağılımını,
  • kompleks ömrünü,
  • bounce sayısını,
  • momentum transferini,
  • iyonun son kinetik enerjisini,
  • zaman adımı sayısını,
  • son atom–iyon uzaklığını

hesaplayabilir ve bu değişkenleri başlangıç \(\theta,\phi\) açılarına göre ısı haritaları halinde gösterebilir.

Yazılımın güçlü yönleri

  • MATLAB ortamından ayrılmadan GPU paralelliği kullanabilmesi.
  • Çok sayıda bağımsız yörünge için düşük bellekli hesap yaklaşımı.
  • Tuzaksız, harmonik ve Paul tuzak yapılarını desteklemesi.
  • Atom/iyon kütleleri ve sıcaklıkların değiştirilebilmesi.
  • Farklı genelleştirilmiş atom–iyon potansiyellerinin girilebilmesi.
  • Head-on ve thermal başlangıç koşulları.
  • CPU ve GPU seçeneklerinin aynı kullanıcı script'inde bulunması.
  • CSV, heatmap, özel yörünge ve outlier çıktılarının otomatik oluşturulması.
  • Standart ode45 ile doğrulama kontrolü.

Yöntemsel sınırlılıklar

  • Simülasyon klasik dinamiktir; iç kuantum serbestlik dereceleri yoktur.
  • İki parçacık varsayımı düşük yoğunluk koşuluna dayanır.
  • ode45gpu genel amaçlı MATLAB ODE API'sinin birebir GPU eşleniği değildir; kuvvet fonksiyonunun özel biçimde gömülmesi gerekir.
  • GPU arrayfun kısıtları kod mimarisini şekillendirmiştir.
  • Kaotik dinamiklerde CPU ve GPU yörüngeleri küçük kayan nokta farklarından dolayı ayrışabilir.
  • Yaklaşık on milyon yörünge kapasitesi donanıma ve belleğe bağlıdır.
  • Kaynak, yeni bir laboratuvar atom–iyon deneyini raporlamamaktadır.
  • Yüklenen preprint'in benchmark sayıları nihai hakemli sürümde değiştirilmiştir.

Çalışmanın MATLAB açısından asıl önemi

Bu çalışma MATLAB'ın yalnız “bir denklem yaz, ode45 çağır ve grafik çiz” biçiminde kullanılmadığını gösteren güçlü bir örnektir. Tek bir fizik problemi üzerinden:

  1. fiziksel Hamiltonyen kurulmakta,
  2. 12 boyutlu ODE sistemi çıkarılmakta,
  3. standart çözücü benchmark edilmektedir,
  4. MATLAB kodunun veri yapıları optimize edilmektedir,
  5. Runge–Kutta algoritması özel olarak yeniden uygulanmaktadır,
  6. GPU yürütmesine uygun skaler kod oluşturulmaktadır,
  7. milyonlarca başlangıç koşulu gpuArray ile hazırlanmakta,
  8. arrayfun ile bağımsız yörüngeler paralel çözülmekte,
  9. gather ile sonuçlar CPU'ya alınmakta,
  10. ve son olarak bilimsel gözlenebilirler, CSV'ler, ısı haritaları ve özel yörüngeler üretilmektedir.

Dolayısıyla çalışma MATLAB'da bilimsel hesaplamanın dört temel katmanını aynı örnekte bir araya getirir: fiziksel modelleme, sayısal analiz, performans mühendisliği ve veri görselleştirme.

Kaynak ve Yöntem Notu

Tam özgün çalışma adı: GPU-Accelerated MATLAB Software for Atom-Ion Dynamics

Yazarlar: Saajid Chowdhury; Jesús Pérez-Ríos.

Yazar sırası: Kaynaktaki sıra aynen korunmuştur.

Eş katkı/eş birinci yazar: Kaynakta bildirilmemiştir.

Sorumlu yazar: Saajid Chowdhury.

Kurum: Department of Physics and Astronomy, Stony Brook University, Stony Brook, New York 11794, USA.

Yüklenen kaynak türü: Hesaplamalı fizik / bilimsel yazılım preprint'i ve klasik moleküler dinamik simülasyon çalışması.

Preprint platformu: arXiv.

Preprint kimliği: arXiv:2509.12381v1.

Preprint tarihi: 15 Eylül 2025.

Hakemlik durumu: Bu çalışma, yüklenen sürüm itibarıyla hakem değerlendirmesinden geçmemiş bir preprinttir; sonuçları bu yayın aşaması dikkate alınarak değerlendirilmelidir.

Yüklenen sürümde DOI: Bulunmamaktadır.

Daha sonraki hakemli yayın: Aynı çalışma daha sonra “GPU-parallelized MATLAB software for atom-ion dynamics” başlığıyla Computer Physics Communications, Cilt 321, Makale 110041, 2026'da yayımlanmıştır.

Hakemli sürüm DOI: 10.1016/j.cpc.2026.110041.

Önemli sürüm farkı: Yüklenen arXiv v1'de CPU benchmark'ı için 22× hızlanma raporlanırken, nihai hakemli yayın CPU hızlanmasını yaklaşık 7× olarak raporlamakta ve ayrıca bir milyon yörüngenin GPU paralelleştirmesinde CPU ode45 tabanına göre 600–3500× hızlanma bildirmektedir. Bu Verianla makalesinin bilimsel gövdesindeki 22×, 10.000-yörünge eşiği ve örnek 8-GPU çalıştırma değerleri yalnız yüklenen v1'den alınmıştır; iki sürüm sessizce birleştirilmemiştir.

Program: atomiongpu.m.

Sayısal çözücü: ode45gpu.

Programlama ortamı: MATLAB R2023a ve Parallel Computing Toolbox.

Geliştirici deposu: Kaynakta saajidchowdhury/supplementGPU olarak belirtilmiştir.

Lisans: Yüklenen preprint'in program özetinde “Licensing provisions” alanı doldurulmamıştır. Nihai hakemli sürüm program için CC0 1.0 belirtmektedir.

Finansman: United States Air Force Office of Scientific Research, FA9550-23-1-0202.

Veri/kod erişimi: Kaynak, kodların, şekillerin ve yardımcı materyalin geliştirici deposunda bulunduğunu belirtmektedir.

Yazar katkıları: Yüklenen v1'de ayrı CRediT katkı tablosu bulunmamaktadır. Daha sonraki hakemli sürümde Saajid Chowdhury için yazılım, görselleştirme ve yazım; Jesús Pérez-Ríos için kavramsallaştırma, metodoloji, danışmanlık ve finansman edinimi dahil katkılar raporlanmıştır.

Çıkar çatışması: Yüklenen v1'de ayrı bir çıkar çatışması bölümü bulunmamaktadır; hakemli yayın sürümünde ayrıca beyan edilmiştir.

Bilimsel içerik kaynağı: Bu Verianla makalesindeki fizik modeli, algoritma, MATLAB mimarisi, giriş parametreleri, benchmark değerleri, GPU testleri, konsol çıktıları ve bilimsel yorumlar kullanıcının yüklediği arXiv v1 çalışmasına dayanmaktadır. Daha sonraki yayın sürümü yalnız bibliyografik doğrulama ve sürüm farkının açıkça belirtilmesi amacıyla kullanılmıştır.

Temel yöntemsel sınır: Bu bir klasik moleküler dinamik simülasyonudur. Çalışma yeni bir saha veya laboratuvar deneyi sunmaz; kuantum dinamiğinin tam çözümü değildir ve yazılım performansı problem, kod yapısı ve donanım bağımlıdır.


Paylaş:

Yorumlar incelendikten sonra yayımlanır.Gönderdiğiniz yorum onay sürecine alınır ve uygun bulunduğunda görünür hâle gelir.

Bir yorum bırakın

E-posta adresiniz yayınlanmayacaktır. Gerekli alanlar * ile işaretlenmiştir

Your experience on this site will be improved by allowing cookies Cookie Policy